11.CSharp各版本新功能和语法-CSharp6功能和语法
11.1 知识点
C#6的新增功能和语法有哪些
- =>运算符(C#进阶套课——特殊语法 =>)
- Null传播器(C#进阶套课——特殊语法 ?)
- 字符串内插(C#进阶套课——特殊语法 $)
- 静态导入
- 异常筛选器
- nameof运算符
静态导入
- 用法:在引用命名空间时,在using关键字后面加入static关键词
- 作用:无需指定类型名称即可访问其静态成员和嵌套类型
- 好处:节约代码量,可以写出更简洁的代码
// 静态导入Mathf命名空间
using static UnityEngine.Mathf;
Max(10, 20);
Mathf.Max(10, 20); // 静态导入Mathf命名空间后就可以省略Mathf了
// 静态导入Test3类
using static Test3;
TTT();
Test3.TTT(); // 静态导入Test3类后就可以省略Test3了
Test4 t = new Test4();
异常筛选器
- 用法:在异常捕获语句块中的Catch语句后通过加入when关键词来筛选异常
- 作用:用于筛选异常
- 好处:帮助我们更准确的排查异常,根据异常类型进行对应的处理
try
{
// 用于检查异常的语句块
}
catch (System.Exception e) when (e.Message.Contains("301"))
{
// 当错误编号为301时 作什么处理
print(e.Message);
}
catch (System.Exception e) when (e.Message.Contains("404"))
{
// 当错误编号为404时 作什么处理
print(e.Message);
}
catch (System.Exception e) when (e.Message.Contains("21"))
{
// 当错误编号为21时 作什么处理
print(e.Message);
}
catch (System.Exception e)
{
// 当错误编号为其它时 作什么处理
print(e.Message);
}
nameof运算符
- 用法:nameof(变量、类型、成员)通过该表达式,可以将它们的名称转为字符串
- 作用:可以得到变量、类、函数等信息的具体字符串名称
int i = 10;
print(nameof(i)); // 打印变量 i 的名称
print(nameof(List<int>)); // 打印泛型类型 List<int> 的名称
print(nameof(List<int>.Add)); // 打印 List<int> 类型的 Add 方法的名称
print(nameof(UnityEngine.AI)); // 打印命名空间 UnityEngine.AI 的名称
List<int> list = new List<int>() { 1, 2, 3, 4 };
print(nameof(list)); // 打印变量 list 的名称
print(nameof(list.Count)); // 打印列表 list 的 Count 属性的名称
print(nameof(list.Add)); // 打印列表 list 的 Add 方法的名称
总结
C#6中的新内容包括了=>运算符、Null传播器、字符串内插等,其中=>运算符、Null传播器、字符串内插是常用的。其他补充的几个知识点使用情景不多,了解即可。
11.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEngine.Mathf;
using static Test3;
#region 知识点二 补充讲解——静态导入
public class Test3
{
public class Test4
{
}
public static void TTT()
{
Debug.Log("123");
}
}
#endregion
public class Lesson11_CSharp各版本新功能和语法_CSharp6功能和语法 : MonoBehaviour
{
void Start()
{
#region 知识点一 C#6的新增功能和语法有哪些
//1.=>运算符(C#进阶套课——特殊语法 =>)
//2.Null 传播器(C#进阶套课——特殊语法 ?)
//3.字符串内插(C#进阶套课——特殊语法 $)
//4.静态导入
//5.异常筛选器
//6.nameof运算符
#endregion
#region 知识点二 补充讲解——静态导入
//用法:在引用命名空间时,在using关键字后面加入static关键词
//作用:无需指定类型名称即可访问其静态成员和嵌套类型
//好处:节约代码量,可以写出更简洁的代码
//静态导入Mathf命名空间
//using static UnityEngine.Mathf;
Max(10, 20);
Mathf.Max(10, 20);//静态导入Mathf命名空间后就可以省略Mathf了
//静态导入Test3类
//using static Test3;
//Test3类中包括TTT()静态方法和Test4()内部类
TTT();
Test3.TTT();//静态导入Test3类后就可以省略Test3了
Test4 t = new Test4();
#endregion
#region 知识点三 补充讲解——异常筛选器
//用法:在异常捕获语句块中的Catch语句后通过加入when关键词来筛选异常
// when(表达式)该表达式返回值必须为bool值,如果为ture则执行异常处理,如果为false,则不执行
//作用:用于筛选异常
//好处:帮助我们更准确的排查异常,根据异常类型进行对应的处理
try
{
//用于检查异常的语句块
}
catch (System.Exception e) when(e.Message.Contains("301"))
{
//当错误编号为301时 作什么处理
print(e.Message);
}
catch (System.Exception e) when (e.Message.Contains("404"))
{
//当错误编号为404时 作什么处理
print(e.Message);
}
catch (System.Exception e) when (e.Message.Contains("21"))
{
//当错误编号为21时 作什么处理
print(e.Message);
}
catch (System.Exception e)
{
//当错误编号为其它时 作什么处理
print(e.Message);
}
#endregion
#region 知识点四 补充讲解——nameof运算符
//用法:nameof(变量、类型、成员)通过该表达式,可以将他们的名称转为字符串
//作用:可以得到变量、类、函数等信息的具体字符串名称
int i = 10;
print(nameof(i)); // 打印变量 i 的名称
print(nameof(List<int>)); // 打印泛型类型 List<int> 的名称
print(nameof(List<int>.Add)); // 打印 List<int> 类型的 Add 方法的名称
print(nameof(UnityEngine.AI)); // 打印命名空间 UnityEngine.AI 的名称
List<int> list = new List<int>() { 1, 2, 3, 4 };
print(nameof(list)); // 打印变量 list 的名称
print(nameof(list.Count)); // 打印列表 list 的 Count 属性的名称
print(nameof(list.Add)); // 打印列表 list 的 Add 方法的名称
#endregion
#region 总结
//C#6中的新内容
//我认为 =>运算符、Null传播器、字符串内插对于我们来说是可以常用的
//其它补充的几个知识点使用情景不多,了解即可
#endregion
}
}
11.3 练习题
using static 是什么?有什么作用?
- using static是静态导入的语法特性。
- 无需指定类型名称即可访问其静态成员和嵌套类型。
- 可以让我们的代码更加简洁,提升编程效率。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com