美文网首页
是C#的全新特性!

是C#的全新特性!

作者: Arabid | 来源:发表于2022-07-31 06:52 被阅读0次
  1. 可空引用类型
    举个例子,我们现在创造一个字符串
    string str = "creeper?"; 或者string str;都是可以正常通过编译的,但是通常不允许string str = null; 出现。在C#8.0以上的版本中,提供了可空引用类型T? ,所以使用该类型的string? str = null;是可以的。
    但是在使用可空引用类型T?前,必须对其是否为空进行检查,否则编译器就会核谐地丢给你一个警告。不要以为你永远用不到这个,至少事实上Console.ReadLine().返回的是string?,而不是string。

  2. 更好的切片
    Python的优点之一就是其优雅的字符串切片查找以及列表索引。现在C#也支持从前面或者后面进行查找了,具体方法非常简单,就是把它的正面索引进行按位取反,例如:

int i = 1;
int j = ^2;
int[] list = {1,1,4,5,1,4}
//list[i] = 1 list[j] = 5
  1. 不再那么恶毒的接口
    发布接口是一个需要小心的事情,你必须在一开始就做好所有的成员,如果你在后期试图修改接口,那么极有可能会与其它使用该接口的开发者结下血海深仇。为了降低C#人的死亡率,接口现在支持在未被其他人实现的情况下使用自己的默认实现。
    比如我们发布了一个接口ICrashHandler,定义如下:
interface ICrashHandler
{
    void CrashHandler(string lev,string reason);
    //什么,你还没实现吗?
   // 那我先帮你实现了,有空要补上啊
    void CrashHandler(Exception e) => CrashHandler("err",e.Message)
}
  • 这样继承与该接口的类就不必实现CrashHandler方法。
  1. 雷霆战机
    switch语句一向因为其恶臭而闻名中外,某些人(包括我)宁可疯狂if大叠也不愿意写上一句switch。现在C#提供了模式化的switch表达式,简洁高效,令人欲罢♂不能。例如这里的语句可以计算直线,方形,圆形的面积:
var area = figure switch 
{
    Line _      => 0, //既然是零就不需要具体的字段了
    Rectangle r => r.Width * r.Height,
    Circle c    => c.Radius * 2.0 * Math.PI,
    _           => throw new UnknownFigureException(figure) //相当于default
};
  • 更多用法请看这里∶


  1. 偷懒大师
    在以前,我们要创建一组点要使用如下语句:Point[] ps = { new Point(1, 4), new Point(3,-2), new Point(9, 5) };
    而现在可以直接使用Point[] ps = { new (1, 4), new (3,-2), new (9, 5) };来创建。

相关文章

  • 是C#的全新特性!

    可空引用类型举个例子,我们现在创造一个字符串string str = "creeper?"; 或者string s...

  • C#语言特性发展史

    C#语言特性发展史 Intro 本文主要总结介绍C# 每个版本带来的不同的语言特性。 C#,读作C Sharp,是...

  • C#特性(Attribute)-现学现用

    前言 想要灵性的使用C#反射机制,特性(Attribute)的使用是必不可少的。 C# 特性(Attribute)...

  • C#枚举类型常用扩展方法(三)

    C#获取枚举值特性(Display、Description、自定义特性) 一、Display特性 调用如下: 二、...

  • 目录 - C#

    总目录 C# 第01局:泛型 C# 第02局:反射 C# 第03局:特性 C# 第04局:委托 C# 第05局:事...

  • C# 语言历史版本特性(C# 1.0到C# 8.0汇总)

    C# 1.0 特性Classes:面向对象特性,支持类类型Structs:结构Interfaces:接口Event...

  • c#特性

    c#特性: 特性(Attribute)是用于在运行时传递程序中的各种元素(比如类,方法,结构,枚举,组件等)的行为...

  • Android进阶之光——Android5.0新特性

    Android5.0新特性 主要新特性概述 全新的Meterial Design风格 支持多种设备 全新的通知中心...

  • C# 特性

    泛型 无 lambda表达式 无 匿名函数 无 委托 winfrom界面委托 在对控件进行操作的时候,可以通过判断...

  • 面向切面编程篇——基础

    C++、C#、Java、Python等目前流行的语言都是面向对象即OOP,封装、继承、多态是其三大特性,三大特性贯...

网友评论

      本文标题:是C#的全新特性!

      本文链接:https://www.haomeiwen.com/subject/nifkwrtx.html