C#各版本新功能 C#8.0
ReadOnly 成员
默认接口方法
接口里面的方法都是虚方法,字类不用写override 就能对其进行覆盖;
这与抽象类里面的方法是不同的,接口管理的更加随意;以后都可以用面向接口开发了;
若是同时继承了接口1跟接口2,接口1,2都实现了方法 TurnOnFor
public interface Interface1
{
public void TurnOnFor(int duration)
{
Task.Delay(duration);
Console.WriteLine("我是接口 Interface1 里面的原始方法");
}
}
public interface Interface2: Interface1
{
public void TurnOnFor(int duration)
{
}
}
public class Child : Interface2
{
}
Interface1 child = new Child();
child.TurnOnFor(11); //调用接口1中的方法
Interface2 child = new Child();
child.TurnOnFor(11); //调用接口2中的方法
模式匹配增强
Using 声明 升级
using() //以前
{}
//现在
using var file =***
//方法的最后会自动帮你释放
静态本地函数
添加 static 修饰符,以确保本地函数不会从封闭范围捕获(引用)任何变量
int M () { int y = 5 ; int x = 7 ; return Add(x, y);
static int Add ( int left, int right ) => left + right; }
可处置的ref结构
可为空的引用类型
异步流
索引和范围
var words = new string[]
{
// index from start index from end
"The", // 0 ^9
"quick", // 1 ^8
"brown", // 2 ^7
"fox", // 3 ^6
"jumped", // 4 ^5
"over", // 5 ^4
"the", // 6 ^3
"lazy", // 7 ^2
"dog" // 8 ^1
}; // 9 (or words.Length) ^0
var quickBrownFox = words[1..4];
var lazyDog = words[^2..^0];
var allWords = words[..]; // contains "The" through "dog".
var firstPhrase = words[..4]; // contains "The" through "fox"
var lastPhrase = words[6..]; // contains "the", "lazy" and "dog"
Null合并赋值
C# 8.0 引入了 null 合并赋值运算符 ??= 。 ok
仅当左操作数计算为 null 时,才能使用运算符 ??= 将其右操作数的值分配给左操作数 ok
非托管构造类型
嵌套表达式中的StackAlloc
内插逐字字符串的增强功能 ok
解释说明: $ 和 @,这两个符号谁在前面都可以了
顶
收藏
关注
评论
作者:王思明
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss