C# core knowledge review - 17. Special syntax

public class test : MonoBehaviour
{
    private void Start()
    {
        #region 知识点一var隐式类型
        //var是一种特殊的变量类型
        //它可以用来表示任意类型的变量
        //注意:
        //1.var不能作为类的成员只能用于临时变量申明时
        //也就是一般写在函数语句块中
        //2.var必须初始化
        var i = 5;
        var list = new List<int>();
        #endregion

        # region 知识点二设置对象初始值
        //申明对象时
        //可以通过直接写大括号的形式初始化公共成员变量和属性
        Person per = new Person(10){ name = "name", sex = true, age = 1 };
        #endregion

        # region 知识点三设置集合初始值
        //申明集合对象时
        //也可以通过大括号直接初始化内部属性
        List<int> list2 = new List<int>() { 1,2,3,4};
        List<Person> list3 = new List<Person>() { new Person(10), new Person(10) { age = 10 } };
        #endregion

        # region 知识点四匿名类型
        //var变量可以申明为自定义的匿名类型
        var v = new { age = 10, num = 11, name = "name" };
        #endregion

        # region 知识点五可空类型
        //1.值类型是不能赋值为空的
        //int te = null;
        //2.申明时在 !!!值类型!!! 后面加?可以赋值为空
        //值类型!!!!!!
        int? te = null;
        float? f = null;
        //3.判断是否为空
        if (te.HasValue) {
            Debug.Log(te.Value); 
            Debug.Log(te); 
        }
        //4.安全获取可空类型值
        int? value = null;
        //4 - 1.如果为空默认返回值类型的默认值
        Debug.Log(value.GetValueOrDefault());
        //4-2.也可以指定一个默认值
        Debug.Log(value.GetValueOrDefault(100));

        //引用类型延伸
        object o = null;
        //相当于是一种语法糖,帮助判断是否为空
        o?.ToString();

        int[] arry = null;
        Debug.Log(arry?[0]);
        #endregion

        # region 知识点六空合并操作符
        //空合并操作符??
        //左边值??右边值
        //如果左边值为nu11就返回右边值否则返回左边值
        //只要是可以为nul1的类型都能用
        int? intv = null;
        //三目运算
        int intI = intv ==null ? 0 : intv.Value;
        //空合并
        intI = intv ?? 0;
        string str = null;
        str = str ?? "110";
        #endregion

        # region 知识点七内插字符串
        // 关键符号:$
        //用$来构造字符串,让字符串中可以拼接变量
        string name = "ffff";
        Debug.Log($"1245{name}");
        #endregion

        # region 知识点八单句逻辑简略写法
        //只有{}中有一句代码才可以省略
        if (true) Debug.Log(111);

        for (int j = 0; j < 5; j++)
            Debug.Log(j);
        # endregion
    }
}
class Person
{
    private int num;
    public bool sex;
    public string name{ get; set; }
    public int age { get; set; }

    public Person(int num) { this.num = num; }
}

Guess you like

Origin blog.csdn.net/qq_29296473/article/details/132038229