CS5L8——CSharp 6 功能和语法

本章代码关键字

1
2
3
using static    //导入某个类的静态成员和嵌套类型,而无需指定类型名称即可访问其静态成员和嵌套类型
when //when的括号里面可以写bool表达式,以筛选异常
nameof() //通过该表达式可以得到变量、类、函数等信息的具体字符串名称

C# 6 的新增功能和语法

  1. =>​ 运算符(C#进阶套课——特殊语法 =>​)
  2. Null​ 传播器(C#进阶套课——特殊语法 ?​)
  3. 字符串内插(C#进阶套课——特殊语法 $​)
  4. 静态导入
  5. 异常筛选器
  6. nameof​ 运算符

静态导入

用法:在引用命名空间时,在 using​ 关键字后面加入 static​ 关键词
作用:无需指定类型名称即可访问其静态成员和嵌套类型
好处:节约代码量,可以写出更简洁的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using static UnityEngine.Mathf;
using static TestA;

public class TestA
{
public class TestB { }

public static void TTT()
{
Debug.Log("123123");
}
}

public class Lesson7 : MonoBehaviour
{
void Start()
{
//Mathf.Max(10, 20); //可以省略前面的Mathf
Max(10, 20);
//TestA.TTT(); //可以省略前面的TestA
TTT();
//TestA.TestB t = new TestA.TestB(); //可以省略前面的TestA
TestB t = new TestB();
}
}

异常筛选器

用法:
在异常捕获语句块中的catch​语句后通过加入when​关键词来筛选异常
when​(表达式)该表达式返回值必须为bool​值,如果为ture​则执行异常处理,如果为false​,则不执行
作用:用于筛选异常
好处:帮助我们更准确的排查异常,根据异常类型进行对应的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
try
{
//用于检查异常的语句块
}
//当错误信息包括301时,做什么处理
catch (System.Exception e) when (e.Message.Contains("301"))
{
print(e.Message);
}
//当错误信息包括404时,做什么处理
catch (System.Exception e) when (e.Message.Contains("404"))
{
print(e.Message);
}
//当错误信息包括21时,做什么处理
catch (System.Exception e) when (e.Message.Contains("21"))
{
print(e.Message);
}
//可以在when里添加各种判断表达式,只要符合条件即可
//当错误信息为其他时,做什么处理
catch (System.Exception e)
{
print(e.Message);
}

nameof 运算符

用法:nameof(变量、类型、成员)​ 通过该表达式,可以将他们的名称转为字符串
作用:可以得到变量、类、函数等信息的具体字符串名称

1
2
3
4
5
6
7
8
9
10
int i = 10;
print(nameof(i));
//print(nameof(int)); //不能直接填写类型
print(nameof(List<int>)); //但是泛型类可以,返回结果是List
print(nameof(List<int>.Add));
print(nameof(UnityEngine.AI));
List<int> list = new List<int>() { 1, 2, 3, 4 };
print(nameof(list));
print(nameof(List<int>.Count));
print(nameof(list.Add));