C#7 的一些新语法

  • A+
所属分类:.NET技术
摘要

 


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");         }