C#7 的一些新语法

1. Out参数

            #region 1.Out参数
            var str = "2";
            ///之前的写法
            {
                int iValue;
                //将str转化成int类型,若转化成功,将值赋给iValue,并返回true;若转化失败,返回false。
                if (int.TryParse(str, out iValue))
                {
                    WriteLine(iValue);
                }
            }
            //C#7的写法
            {
                if (int.TryParse(str, out int iValue))
                {
                    WriteLine(iValue);
                }
                //或者
                if (int.TryParse(str, out var vValue))
                {
                    WriteLine(iValue);
                }
            }
            #endregion

2. 模式

            #region 2.模式 pattern
            {
                WriteLine("C#7_2.模式 pattern:");
                this.PrintStars(null);
                this.PrintStars(2);
            }
        /// <summary>
        ///  具有模式的 IS 表达式
        /// </summary>
        private void PrintStars(Object oValue)
        {
            if (oValue is null) return;// 常量模式 "null"
            if (!(oValue is int iValue)) return;// 类型模式 定义了一个变量 "int i"
            WriteLine(iValue);
            WriteLine(new string('*', iValue));
        }

3. Swith

            #region 3. Swith
            {
                WriteLine("C#7_3. Swith新语法:");
                this.Swith("wang");
                this.Swith("Max");
                this.Swith("wangMax");
                this.Swith(null);
                this.Swith("");
            }
            #endregion
        /// <summary>
        /// 可以设定任何类型的 Switch 语句(不只是原始类型)
        /// 模式可以用在 case 语句中
        /// Case 语句可以有特殊的条件
        /// </summary>
        private void Swith(string sValue)
        {
            int iValue = 1;
            switch (sValue)
            {
                case string s when s.Length >= 4:
                    WriteLine("s");
                    break;
                case "Max" when sValue.Length > 2:
                    WriteLine(sValue);
                    break;
                default:
                    WriteLine("default");
                    break;
                case null:
                    WriteLine("null");
                    break;
            }
        }

4. 数字分隔符【每隔3位+"_"】

            #region 4.数字分隔符【每隔3位+"_"】
            long lValue = 100_000_000;
            WriteLine(lValue);
            #endregion

5. 局部函数

            #region 5. 局部函数
            {
                WriteLine("C#7_6. 局部函数:");
                Add(3);
                int Add(int i)
                {
                    WriteLine(2 + i);
                    return i;
                }
            }
            #endregion

6. 元组

            #region 6.元组
            {
                var result = this.LookupName(1);
                WriteLine(result.Item1);
                WriteLine(result.Item2);
                WriteLine(result.Item3);
              
            }
            {
                var result = this.LookupNameByName(1);
                WriteLine(result.first);
                WriteLine(result.middle);
                WriteLine(result.last);

                WriteLine(result.Item1);
                WriteLine(result.Item2);
                WriteLine(result.Item3);
            }
            #endregion
        /// <summary>
        /// System.ValueTuple 需要安装这个nuget包
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        private (string, string, string) LookupName(long id) // tuple return type
        {
            return ("first", "middle", "last");
        }

        private (string first, string middle, string last) LookupNameByName(long id) // tuple return type
        {
            return ("first", "middle", "last");
            //return (first: "first", middle: "middle", last: "last");
        }

 

posted @ 2020-12-01 19:40  wangwangwangMax  阅读(360)  评论(0编辑  收藏  举报