C#6-c#7 知识点使用汇总
  cMuC39pMgAnk 2023年11月19日 32 0

七、C#6.0语法及使用
6.0.01 using static 静态导入
指令命名了一种类型,无需指定类型名称即可访问其静态成员和嵌套类型.
demo:

using static System.Console;

WriteLine("dennychen");
//System.Console.WriteLine("dennychen");

6.0.02 try catch when异常筛选器:
仅在满足某些参数时才允许捕获异常。

catch (ExceptionType [e]) when (expr)

demo:

try{

//someoperation();

}catch(Exception e) when(e.InnerException is OperationCanceledException oce){}

6.0.03 自动属性初始化表达式:
允许在声明时为内联属性设置初始值.
public string Foo { get; set; } ="denny";

6.0.04 表达式主体定义:
允许将某些函数体编写为单行表达式

public int Age=>(int)(DateTime.Now - new DateTime(1990,01,10)).TotalYears;

public void PrintAge()=>Console.WriteLine(Age);

6.0.05 Null空条件运算符:
如果对象user不为空,则运算符允许你访问user对象的Name,否则返回no name
user?.Name ?? "no name"

6.0.06 字符串内插:
允许将变量插入到字符串中

var name="Denny";

$"my anme is {name}"

6.0.07 Nameof运算符:
允许将代码中的变量,类型,成员名称转换为字符串。

string nameOfName=nameof(TestClass);

Type type=typeof(TestClass);string typeName=type.Name;

Roslyn编译器及服务
提供了一组丰富的API,允许开发人员在运行时动态的生成,编译,执行C#脚本。

string scpritText="int a=1;int b=2;return a+b;"

var result=Script.Run(scpritText);

八、C#7.0语法及使用
7.0.01 out 变量:
允许在传参的同事进行声明变量:

if (int.TryParse("123", out int value))

{

Console.WriteLine(value);

}


7.0.02 元组:包括多个数据元素的简单结构方法。

(string Name,int Age) user=("denny",28);

string name =user.Name;


析构函数:
1.析构函数用于析构类的实例,使用析构函数释放资源;
2.程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的.
特性:
3.不能在结构中定义析构函数。 只能对类使用析构函数。
4.一个类只能有一个析构函数。
5.无法继承或重载析构函数。
6.无法调用析构函数。 它们是被自动调用的。
7.析构函数既没有修饰符,也没有参数。

class A                         // 基类First

{

~A()                 // 析构函数

{

Console.WriteLine("~A()析构函数");

}

}

7.0.03 模式匹配:is表达式,switch表达式,
是一种可以让你对除对象类型以外的属性实现方法分派的功能,支持is表达式,switch表达式。
模式匹配最常见的场景之一是确保值不为空.

string test="12";

if(test is in count)

7.0.04 本地函数:方法中的方法add;

public void M()

{

int result=add(100,200); //add(int a,int b)=> a+b;

int add(int a,int b){return a+b};

}


7.0.05 已扩展expression bodied成员
将lambda 表达式的这种用法扩展到了方法上

public static string GetTime()

{

return "Current Time - " + DateTime.Now.ToString("hh:mm:ss");

}public static string GetTime() =>   "Current Time - " + DateTime.Now.ToString("hh:mm:ss");

7.0.06 Ref局部变量和返回结果
ref 关键字用于局部变量声明前面和方法调用前面。
可通过相同方式按引用访问值。
在某些情况下,按引用访问值可避免潜在的高开销复制操作,从而提高性能。

弃元
配合元组,你可以给,但我可以不要,弃元符号(_)是一个合法变量符,我们可以声明单下划线的变量,一旦声明了弃元符号的变量,那么在后续的同一作用域要注意使用的是弃元还是变量.
弃元可以将一些表达式的结果标记为舍弃,从而让表达式合法化,否则编译器可能会抛出警告:
直接写1+1不合法,编译器无法通过,但是下面的写法是合法的
_ = 1 + 1;
二进制文本,数字分隔符
二进制文字由 0b 表示:
var num = 0b10001

数字分隔符由_表示:

long Salary = 1_00_00_00_00_000; //输出 Salary=100000000000

ETLCloud 全域数据集成平台
我们基于ETLCloud数据集成平台和API搭建了我们的数据中台,通过ETLCloud我们可以自已构建数据管道把业务数据同步到数据仓库中,再通过数据服务开发平台发布成为API供前端业务系统使用,同时配合我们



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
cMuC39pMgAnk