您的当前位置:首页正文

C# 入门:类

2024-11-25 来源:个人技术集锦

1,类只能进行单一继承,但是可以继承多个接口(interface)
2,接口可以继承多个接口
3,override 用于重写基类成员  但是需要与 virtual 配对使用 
4,Tostring  是每个对象都有的方法,因为其来自 Object 是所有对象的基类,可重写。
5,abstract   使用该关键字修饰的成员,其派生类必须实现该成员 (成员使用了abstract 类也需使用abstract 修饰符)
6,sealed  由该关键字修饰的类不能作为基类即不可派生。也可以取消virtual 成员的虚含义
7,static 
        1)静态类  无法实例化,同时需要提供静态构造函数
        2)静态方法  调用必须使用类名访问   不能使用实例进行访问
        3)静态方法可以进行重载,但不能进行重写,因为它们属于类,而不属于类的任何实例
        4)如果类包含静态字段,则提供在类加载时初始化它们的静态构造函数
        5)静态函数中无法访问非静态成员,因为静态成员属于类,不属于任何实例,非静态成员会随实例的不同而不同。
9,非静态方法里面可以使用静态成员。
10,访问权限设置 

11,set、get、init、value   属性的隐藏实现,set用于修改属性值,get用于获取属性值,init只在
对象构造的时候分配新值。value 是get、set访问器分配的值。

class TimePeriod
{
   private double _seconds;

   public double Hours
   {
       get { return _seconds / 3600; }
       set {
          if (value < 0 || value > 24)
             throw new ArgumentOutOfRangeException(
                   $"{nameof(value)} must be between 0 and 24.");

          _seconds = value * 3600;
       }
   }
    private string _name;
    public string Name  // read-write instance property
    {
        get => _name;
        set => _name = value;
    }
}

注:
        1)set、get、init可类似方法,set可修改,get可读。(可参考cocos的property)
        2)可用 init 访问器代替 set 访问器将属性设为只读。
        3)set、get、init可控制属性是读写、只读、只写
12,重载:相同的函数名,函数的形参不同,根据形参的个数,调用对应的函数
13,重写:使用 override 覆盖基类方法,重新实现。
14,构造函数:
        1)在创建类的实例时,会自动调用改方法,并进行初始化一些成员。
        2)可进行重载。
        3)函数名必须与类名相同。
        4)无参构造函数,编译器会自动提供
        5)如果构造函数被声明为私有,则该类无法被实例化
        6)基类构造函数可以使用base关键字调用,如下:

public class Manager : Employee
{
    public Manager(int annualSalary)
        : base(annualSalary)
    {
        //Add further instructions here.
    }
}

             注:1)如果基类没有提供无参数构造函数,派生类必须使用 base 显式调用基类构造函数
15,类的所有成员,如果没有使用修饰符进行修饰,默认是 private私有,包括构造函数
16,终结器即虚构函数   ~name(){}
        1)无法在结构中定义终结器。 它们仅用于类。
        2)一个类只能有一个终结器。
        3)不能继承或重载终结器。
        4)不能手动调用终结器。 可以自动调用它们。
        5)终结器不使用修饰符或参数。
        6)可进行重写
        7)编译器会自动生成一个虚构函数
        8)调用顺序 :子类虚构 =》父类虚构
17,在单条语句中实例化对象或集合 并进行成员赋值,如下:

public class Cat
{
    // Auto-implemented properties.
    public int Age;
    public string Name { get; set; }
    public Cat(){}
    public Cat(string name)
    {
        this.Name = name;
    }
}

//类测试
Cat cat = new Cat { Age = 10, Name = "hello" };
Cat sameCat = new Cat("Fluffy"){ Age = 10 };
Console.WriteLine($"{cat.Age}+ {cat.Name}");
Console.WriteLine($"{sameCat.Age}+ {sameCat.Name}");
//集合测试
int[] array2 = new int[] {0, 2, 4, 6, 8};
/**
output  10+ hello
output  10+ Fluffy
*/

18,partial  关键字 可以把一个、一个、一个或一个方法的定义到两个或更多的文件中,编译时会把所有部分组合起来。

        

显示全文