c# 可空类型,语法糖,lambda,命名规则(Pascal 帕斯卡命名,Camel 驼峰命名),注释,封装,继承,多态
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可以访问
继承:去掉重复代码;可以实现多态;侵入性很强的类关系。
多态:相同的变量、相同的操作,但是不同的实现
方法的重载 接口&实现 抽象类&实现 继承