本章节目的:

  • 记录学习过程中出现的技巧和知识
  • 记录象征想较强的案例

环境配置:


小知识

1、字符串格式化输出

2、计算向量长度的方法

public float Length()
{
    Math.Sqrt(x*x+y*y+x*x);
}

3、使用构造函数时,同名赋值的方法

public int a;
public int b;
public Cus(int a,int b)
{
    this.a = a;
    this.b = b;
}

4、继承中关于this和base关键字的使用

public Boss(int attack,int hp,int speed)
{
    this.attack = attack;
    base.hp = hp;
    base.speed = speed;
}

3、修饰符

  1. public: 同⼀程序集(DLL或EXE)中的任何其他代码或引⽤该程序集的其他程序集都可以访问该类型或成员。
  2. private: 只有同⼀类或结构中的代码可以访问该类型或成员。
  3. protected: 只有同⼀类或结构或者此类的派⽣类中的代码才可以访问该类型或成员。
  4. internal: 同⼀程序集中的任何代码都可以访问该类型或成员,但的代码不可以。
  5. protected internal: 在⼀程序集中,protected internal体现的是internal的性质;在其他程序集中,protected internal体现的是protected的性质。

4、其他修饰符和rewadonly

  1. new

  2. 隐藏继承的成员

  3. abstract

  4. 使⽤abstract修饰的类为抽象类,抽象类只能是其他类的基类,不能与sealed、static⼀起使⽤。abstract可以修饰抽象类中的⽅法或属性,此时,⽅法或属性不能包含实现,且访问级别不能为私有。

  5. 抽象类不能被实例化。

  6. sealed

  7. 使⽤sealed修饰的类为密封类,密封类⽆法被继承,不能和abstract、static⼀起使⽤。

  8. 当sealed⽤于⽅法或属性时,必须始终与override⼀起使⽤。

  9. static

  10. 使⽤static修饰的类为静态类,静态类所有成员都必须是静态的,不能与abstract、sealed⼀起使⽤。

  11. static可以修饰⽅法、字段、属性或事件,始终通过类名⽽不是实例名称访问静态成员,静态字段只有⼀个副本。

  12. 静态类不能被实例化。

  13. const

  14. 使⽤const关键字来声明某个常量字段或常量局部变量,必须在声明常量时赋初值。

  15. 不能与static⼀起使⽤,常量默认是static的,常量字段只有⼀个副本。

  16. readonly

  17. 使⽤readonly关键字来声明只读字段。

  18. 只读字段可以在声明或构造函数中初始化,每个类或结构的实例都有⼀个独⽴的副本。

  19. 可以与static⼀起使⽤,声明静态只读字段。
  20. 静态只读字段可以在声明或静态构造函数中初始化,静态常量字段只有⼀个副本。

  21. virtual

  22. virtual关键字⽤于修饰⽅法、属性、索引器或事件声明,并使它们可以在派⽣类中被重写。

  23. 默认情况下,⽅法是⾮虚拟的。

  24. 不能重写⾮虚⽅法。
  25. virtual修饰符不能与static、abstract、private或override修饰符⼀起使⽤。

  26. override

  27. 要扩展或修改继承的⽅法、属性、索引器或事件的抽象实现或虚实现,必须使⽤override修饰符。

  28. 重写的成员必须是virtual、abstract或override的。

4、重载

  1. 方法重载

  2. 方法重载:是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数

  3. 具体规范: (1)方法名一定要相同。 (2)方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。

    • a. 如果参数个数不同,就不管它的参数类型了。

    • b.如果参数个数相同,那么参数的类型必须不同。

    (3)方法的返回类型、修饰符可以相同,也可不同。

  4. 实例

    ```csharp public static int AddNumber(int num1,int num2) { return num1 + num2;

    }

    public static double AddNumber(int num1, int num2,int num3) { return num1 + num2; }

    public static double AddNumber(double num1, int num2) { return num1 + num2; } ```

  5. 函数重载

1.函数重载:就是有多个参数不同的构造函数。

2.构造函数重载:是用来创建对象的特殊方法的,方法名和类名一样,没有返回值,连void都不用。 (1)构造函数可以有参数,new对象的时候传递参数即可 (2)如果不指定构造函数,则类有一个默认的无参数构造函数 (3)如果指定了构造函数,则不再有默认的无参数构造函数 (4)如果需要五参数的构造函数,则需要自己来写

3.举例(代码展示)

csharp public Person(string name,char gender ,int age) {//有参数的构造函数的出现会将原来默认的无参数的构造函数干掉。 this._name = name; this._age = age; this._gender = gender; } //如果此时此刻还想用到无参数的构造函数,那么就必须 //构造函数的重载 public Person() { }

  1. 运算符重载(参考地址

  2. 什么是运算符重载

    • 您可以重定义或重载 C# 中内置的运算符。

    • 程序员也可以使用用户自定义类型的运算符。

    • 重载运算符是具有特殊名称的函数,是通过关键字operator 后跟运算符的符号来定义的。

    • 与其他函数一样,重载运算符有返回类型和参数列表。

  3. 可重载和不可重载运算符

    运算符 描述
    +, -, !, ~, ++, -- 这些一元运算符只有一个操作数,且可以被重载。
    +, -, *, /, % 这些二元运算符带有两个操作数,且可以被重载。
    ==, !=, <, >, <=, >= 这些比较运算符可以被重载。
    &&, || 这些条件逻辑运算符不能被直接重载。
    +=, -=, *=, /=, %= 这些赋值运算符不能被重载。
    =, ., ?:, ->, new, is, sizeof, typeof 这些运算符不能被重载。

未分配

1、dynamic(动态类型)

2、类中的ToString方法