c# 可空类型,语法糖,lambda,命名规则(Pascal 帕斯卡命名,Camel 驼峰命名),注释,封装,继承,多态

------------------C#中的?可空类型-?-??----------------

C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。

? : 单问号用于对 int,double,bool 等无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是 NullAble 类型的。

int? i =1; 等同于:

Nullable<int> i = new Nullable<int>(3);

int a; //默认值为0

int? b; //默认值为null

??:双问号可用于判断一个变量在为 null 时返回一个指定的值。

string str = null;

string str1 = str ?? "kkk"; //如果问号左边的变量是空值,则赋予右边的值。

---------------语法糖-----------------------------
1.简化属性

private int _result;

public int result

{

  get {return _result;}

  private set{_result = value;}

}

简写:public int result{get;private set;}

2.委托

public delegate void xxxEventHandler();

xxxEventHandler xx = new xxxEventHandler(Method);

简写:Action xx = () => Method;

3.集合

List<int> xxx = new List<int>();

xxx.Add(1);

xxx.Add(2);

简写:List<int> xxx = new List<int>(){1,2};

4.使用完毕后自动释放资源(Using || try finally)

注:使用Using释放资源的对象都必须继承IDisposable接口。

using(SqlConnection conn = new SqlConnection("数据库连接字符串"))

{

  ...; //用于return数据库数据,不用写Close方法了

}

5.类型实例化

A a = new A();

a.name = "kk";

a.age = 1;

简写:A a = new A(){name = "kk",age = 1};

--------------lambda---------------------------------------

访问修饰符 修饰符 返回值类型 方法名(参数列表) => 表达式;
public static int Add(int a, int b) => a + b;
Lambda的本质就是方法(匿名方法)
Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"
x=>x.id

-------------------命名规则--------------------------
C#变量命名规则Pascal 帕斯卡命名

当有多个单词组成变量或方法,每个单词首字母大写

常用于:类名 属性 方法名 接口

Camel 驼峰命名

多个单词出现,首单词首字母小写,其他单词首字母大写

常用于:变量,字段

--------------------注释-----------------------
单行注释//

多行注释
/*

*

*/

文档注释

/// <summary>

/// ...

/// <summary>

---------------C#可以做什么-------------------------------
C#基于.NET Framework 和 .NET CORE平台

Client/Server 客户端/服务端

windows桌面应用程序

winform 2D

WPF 3D

Browser/Server 浏览器/服务端

Web程序 MVC5 WebForm
--------------------------封装,继承,多态-------------------------
封装:隔离,数据安全;内部修改保持稳定;提供重用性;
public:公开
private:私有,只有类的内部可以访问
protected:受保护的,类的内部获取子类可以访问
internal:内部的,同一程序集dll,exe可以访问

继承:去掉重复代码;可以实现多态;侵入性很强的类关系。

多态:相同的变量、相同的操作,但是不同的实现

   方法的重载 接口&实现 抽象类&实现 继承