前言
把菜鸟教程C#部分的知识点记录下来,以供日后复习。
菜鸟教程
可空类型
总结:
声明类型后面加?可以让不能为空的值为空。
??和?.使用方法看代码示例。
可空类型
示例代码:
int? a;
a = null;
b = a??1;//如果a为空则返回1
//如果testClass为空则不会调用DoSomething方法
//省掉了判断testClass是否为空的步骤
testClass?.DoSomething();
继承
总结:
C#不支持多重继承,但是可以继承多个接口。
实例只能向上兼容(子实父)。
派生类必须继承父类的构造函数,默认继承的无参构造函数。派生类继承构造函数时需要传入父类构造函数所需的参数,具体看代码示例。
继承
示例代码:
class Father
{
public Father(int a)
{
Console.WriteLine("Father:{0}",a);
}
public virtual void DoFather()
{
Console.WriteLine("Father");
}
}
class Son:Father
{
public Son(int a) : base(a)
{
Console.WriteLine("Son:{0}", a);
}
public override void DoFather()
{
Console.WriteLine("Son");
}
}
class Program
{
static void Main(string[] args)
{
Father father = new Father(1);
father.DoFather();
Son son = new Son(1);
son.DoFather();
//Error 子类无法用父类实例
//Son sf = new Father() as Son;
//sf.DoFather();
Father fs = new Son(1);
fs.DoFather();
Console.ReadKey();
}
}
多态
总结:
abstract类中可以包含抽象字段,抽象方法。也可以包含实现了的方法和字段(非abstract)。
abstract和virtual的区别:abstract是抽象,只需要声明不需要实现部分,它必须被覆写。virtual是虚方法。必须有实现部分(即使是空的大括号),可以不被覆写。
new和override的区别:new是隐藏方法,根据声明的class调用方法,如果声明是父类,即使是用子类实例的,也调用的父类。override是重写方法,看用的哪个类实例调用哪个类。
方法重载(overload)有三个条件,方法名必须相同,参数列表必须不相同,返回值类型可以不相同。(二必须一可以)
多态
运算符重载
总结:
1.是静态方法,是重载不是覆写。
2.注意需要的参数和返回值。
3.使用operator关键字,后面跟上要重载的操作符。
4.不是所有操作符都可以重载,详细内容看教程。
运算符重载
示例代码:
public class Program
{
static void Main(string[] args)
{
OperatorTest a = new OperatorTest();
a.num = 5;
OperatorTest b = new OperatorTest();
b.num = 6;
OperatorTest c = a + b;
Console.WriteLine(c.num);
Console.ReadKey();
}
}
public class OperatorTest
{
public int num;
//运算符重载
public static OperatorTest operator +(OperatorTest a, OperatorTest b)
{
OperatorTest test = new OperatorTest();
test.num = a.num + b.num;
return test;
}
}
来源:CSDN
作者:愿逐月华流照君丶
链接:https://blog.csdn.net/qq_39162826/article/details/103490048