七、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供前端业务系统使用,同时配合我们