1、自动生成类的构造函数:写入ctor,按两下Tab键;
2、自动生成类的属性:写入prop,按两下Tab键;
3、自动生成类的属性+字段:写入propfull,按两下Tab键;
4、readonly修饰的字段,在构造函数(包括静态构造函数)的时候,仅有1次被修改的机会;
5、将数值转换成二进制字符串;
例:
uint x = uint.MaxValue;
string binStr = Convert.ToString(x,2);
6、自动生成索引器:写入indexer,按两下Tab键;
7、可空类型的Value属性,为这个类型的值;
8、可空类型的HasValue属性,可以判断该值是否为空;
9、调用对象的GetHashCode()方法,可以得到对象的Hash Code,它可判断对象是否是不同对象;
10、TryParse()方法可以判断解析是否正确,不报异常。,使用out关键字可以拿到解析后的值;
11、值类型不能使用as转换类型,例如struct;
12、方法可以使用可选参数设置默认值,可选参数必须放在参数的后面;
例:
private bool TempratureCheck(double temprature,double max=99,double min=-99)
{//code}
13、T?是Nullable的别名,可以定义可空类型。HasValue属性,可以判断是否有值;Value属性,则是具体值;
14、尽量不使用struct,它是值类型,会引起大量副本,增加内存。尽量使用类。
15、尽量不要使用class作为类的属性,可以使用struct,因为返回一个struct的只读属性会建立一个它的全新副本。
错误范例
private Point location;
public Point Location{get{return location;}}
如果Point是类,返回的其实是个引用。其他任何对象都能访问它,进行读写,使用private都不能保护私有字段location。
16、{0:c}当地货币格式,{0:x}十六进制,{0:d}短日期,{0:D}长日期,{0:P}百分数,{0:Pn}百分数,n是几位小数
17、将对象序列号
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
18、可以重写对象的Equals方法,将引用类型的比较转换成值类型的比较。
例如:重写Equals方法,在list中调用Contains方法可以使属性一样的不同对象,返回True
public override bool Equals(object obj)
{
if (obj == null) return false;
Book other = obj as Book;
if (other == null) return false;//这句话很重要,如果转不过来,也会是null
if (other.ID == this.ID && other.Name == this.Name && other.Price == this.Price) return true;
return false;
}
19、string.Join()方法,可以把数组或列表的值转换成字符串
20、WPF控件宽度绑定自身高度
Width="{Binding RelativeSource={RelativeSource Mode=Self},Path=ActualHeight}"
21、全局异常处理
a、try{}catch不会捕获线程中触发的异常
b、在WPF、WInForm里,可以使用订阅全局异常处理事件(非UI线程上未处理的异常,不会触发):
Application.DispatcherUnhandledException
Application.ThreadException
c、任何线程有未处理的异常都会触发AppDomain.CurrentDomain.UnhandledException
这个事件通常用来记录一些未处理的异常,导致软件闪退的原因。
22、取消null警告提示
项目属性中的PropertyGroup->Nullable字段的值改为disable
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>