c# 语法糖

经过简化的Property

public string MyName { get; set; }
public string MyName { get; protected internal set; }

 func与action

Func是一个.Net内置的委托。
Func<Result>,Func<T1,Result>是一个.Net内置的泛型委托。
Func<TResult>
Func<T,TResult>
Func<T1,T2,TResult>
Func<T1,T2,T3,TResult>
Func<T1,T2,T3,T4,TResult>
Action<T>的用法与Func几乎一样,调用方法也类似。
Action
Action<T>
Action<T1,T2>
Action<T1,T2,T3>
Action<T1,T2,T3,T4>

两者区别
Func与Action作用几乎一样。只是Func<Result>有返回类型;Action<T>只有参数类型,不能传返回类型。
所以Action<T>的委托函数都是没有返回值的。

 问号的演变

string a = null;var b = a??””;

类型实例化的语法糖

var abc = new Abc{
ID=1,
Name="yukaizhao"
};

传说中的扩展方法
 

public static class StringExtensions
{
        /// <summary>
        /// 判断字符串是否为null或""
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsNullOrEmpty(this string str)
        {
            return string.IsNullOrEmpty(str);
        }
}

使用匿名类

var a = new {
    ID = 1,Name=”yukaizhao”,BlogUrl=”http://www.cnblogs.com/yukaizhao/”
};
//匿名类在linq to sql或者entity framework中返回查询数据时很好用。

字符串嵌入值

 var result = $"a{obj}bbbb";

nameof

是C#6新增的一个关键字运算符,主要作用是方便获取类型、成员和变量的简单字符串名称(非完全限定名),意义在于避免我们在代码中写下固定的一些字符串,这些固定的字符串在后续维护代码时是一个很繁琐的事情。

Person p = new Person();
Console.WriteLine(nameof(p));
Console.WriteLine(nameof(p.Name));
Console.WriteLine(nameof(Person.CreateDateTime));

自动属性默认初始化
 

public string Name { get; set; } = "hello world";


异常过滤器when
 

使用方法:
 try 
{ 
throw new ArgumentException("string error");
 }
 catch (ArgumentException e) when (myfilter(e))
 { 
Console.WriteLine(e.Message);
 }
static bool myfilter(ArgumentException e)
 { 
return false;
 }
When语法作用是:在进入到catch之前、验证when括号里myfilter方法返回的bool,如果返回true继续运行,false不走catch直接抛出异常。
使用这个filter可以更好的判断一个错误是继续处理还是重新抛出去。按照以前的做法,在catch块内如需再次抛出去,需要重新throw出去,这时的错误源是捕捉后在抛的,而不是原先的,有了when语法就可以直接定位到错误源。 
catch和finally代码块内的Await


自从C# 5.0时代引入async和await关键字后,异步编程就变得流行起来。尤其在现在的.NET Core时代,如果你的代码中没有出现async或者await关键字,都会让人感觉到很奇怪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值