11.静态导入、异常筛选器和nameof运算符

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

×

喜欢就点赞,疼爱就打赏