c#学习笔记Day3

第三章

1.只读字段

        Readonly关键字比const灵活的多,允许把一个字段设置为常量,但还需执行一些计算,已确定他的初始值。其规则是可以在构造函数中给只读字段赋值,但不能在其他地方赋值。只读字段还可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值。如果把只读字段设置为static,则必须显示声明他。

        只读字段:用readonly修饰符声明的字段为只读字段,只读字段可以是实例字段或静态字段,它只能在字段声明中或构造函数中重新赋值,在其它任何地方都不能改变只读字段的值。

        常量:用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改。

        静态构造函数:一个类只能有一个静态构造函数,静态构造函数前面必须是static,最多只运行一次,不可以被继承。静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。

2.部分类

         Partial关键字允许把类、结构、方法或接口放在多个文件中。

3.静态类

         如果类只包含静态的方法和属性,该类就是静态类。静态类功能上和使用私有静态构造函数创建的类相同。不能创建静态类的实例。使用static关键字,编译器可以检查用户是否不经意间给该类添加了实例成员,如果是,就发生一个编译错误。静态类语法如下:    

   static class StaticUtilities

    {

        public static void HelperMethod()

        {

        }

}

    

调用方法:StaticUtilities.HelperMethod();

4.Object类

         所有的.NET类都派生自system.Object。其实际意义在于,除了自己定义的方法和属性外,还可以访问为Object定义的许多共有的和受保护的成员方法。

         System.Object()方法:

  1. ToString()方法:
  2. GetHashCode()方法:
  3. Equals()(两个版本)和ReferenceEquals()方法:
  4. Finalize()方法:
  5. GetType()方法:
  6. MemberwiseClone()方法:

5.扩展方法

        有许多扩展类的方式。如果有类的源码,继承就是给对象添加功能的好方法。如果没有源代码,则可以使用扩展方法,它允许改变一个类,但不需要该类的源码。

        扩展方法是静态方法,他是类的一部分,但是没有放在类的源代码中。例如一个Money类需要添加一个方法AddToAmount(Decimal amountToAdd),但是       ,由于某种原因源码不能修改,此时必须创建一个静态类,把方法AddToAmount()添加为静态方法。

Public static class MoneyExtension

{

   Public static void AddToAmount(this Money money,decimal amountToAdd)

     {

       //ToDo Sth
     }

}

        注意这个方法的参数,第一个参数是要扩展的类型,他放在this关键字的后面,告诉编译器,这个方法是Money类型的一部分。

        另外调用的时候:

    Money money=New Money();

    money.AddToAmount(10M);

        即使这个扩展方法是静态的,也要使用标准的实例方法语法。如果扩展方法与类中的某个方法名相同,则就从不会调用这个扩展方法。

猜你喜欢

转载自blog.csdn.net/weixin_39504659/article/details/84142391