C#从入门到精通(第四版)学习记录-- 第8、9章

第八章 属性和方法

8.1 属性

8.1.1 属性概述

  • public: 不限制对该属性的访问
  • private: 私有访问修饰符,只能在其声明类中使用
  • protected:只能从其所在类和所在类的子类(派生类)进行访问
  • internal: 只有其所在类才能访问

8.2 方法

8.2.1 方法的声明组合:

  • 包含一个有效的访问修饰符组合
  • 包含的修饰符彼此各不相同
  • static、virtual和override修饰符不能同时存在,只能单独存在
  • new和override修饰符不能同时存在,只能单独存在
  • 若声明了abstract修饰符,则不能再声明static、virtual、sealed或extern
  • 若声明了private修饰符,则不能再声明virtual、override或abstract
  • 若声明了sealed修饰符,则该声明应该包含override修饰符

8.2.2 方法的参数类型

实参:传给方法的值
形参:接受实参的变量
声明方法参数时,可以用关键字params、ref和out修饰

  1. params参数:指定在参数数目可变时采用的方法参数,必须是一维数组;
static void PrintParams(params string[] list)
{
     foreach (var item in list) { Console.WriteLine(item);}
}
static void Main(string[] args)
{
      string[] strName = new string[3] {"hello","world","!" };
      PrintParams(strName);
      Console.ReadLine();
}
  1. ref参数:引用传递,相当于C++中的&修饰,传入的是地址;若要使用,方法声明和调用方法都必须显示ref关键字;传递前要初始化传入的变量,否则编译报错
    引用类型,不写ref,也是传递的引用(类、数组等(结构体是值类型))
static void UpdateParam(ref int iValue)
{
     iValue = 10;
}
static void Main(string[] args)
{
     int iV = 1;     
     UpdateParam(ref iV);  //若iV未初始化,会报错
     Console.WriteLine("iV:{0}.", iV);  //iV:10
}
  1. out参数:定义为输出参数,会导致参数通过引用来传递,但传递前可以不初始化传入的变量;若要使用,方法声明和调用方法都必须显示out关键字
static void UpdateParam(out int iValue)
{
     iValue = 10;
}
static void Main(string[] args)
{
     int iV;     
     UpdateParam(out iV);  //若iV未初始化,会报错
     Console.WriteLine("iV:{0}.", iV);  //iV:10
}

8.2.5 Main方法

Main方法默认访问级别为private,使用时注意:

  • Main方法是程序的入口点,程序控制在该方法中开始和结束;
  • 该方法在类或结构的内部声明,必须为静态方法,且不应该为公用的
  • 可以有void会int返回值
  • 可以有参数,也可以无参数
  • 参数可以作为从零开始索引的命令行参数来读取

第九章 结构和类

9.1 结构

9.1.1 结构概述

结构通常用来封装一组相关的变量,还可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。若同时包括以上几种成员,应考虑用类。结构特点:

  • 结构是值类型,类是引用类型
  • 向方法传递结构时,结构时通过传值方法传递的,而不是引用
  • 结构的实例化可以不使用new运算符
  • 结构可以声明构造函数,但必须带参数
  • 结构不能继承,所有结构都直接继承自System.ValueType,后者继承自System.Object
  • 结构可以实现接口
  • 在结构中不能初始化实例字段
  • 在结构声明中,除非字段被声明为const或static,否则无法初始化

9.3 类

9.3.2 类的声明

类的常用修饰符:

  • new : 仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员;
  • public: 不限制对该类的访问;
  • protected: 只能从其所在类和所在类的子类(派生类)进行访问;
  • internal: 只有其所在类才能访问;
  • private: 只有.NET中的应用程序或库才能访问;
  • abstract: 抽象类,不允许建立类的实例;
  • sealed: 密封类,不允许被继承;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qzy0621

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值