C#小技巧

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C#气氛组队员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值