C# 7.0 新特征 Demo

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using static System.Console;
  5 
  6 namespace ConsoleApp1
  7 {
  8     public class CSharp7
  9     {
 10         public static int b = 0b0001;
 11         public static int b2 = 0b0001_00_00;
 12         public static long salary = 1000_000_000;
 13         public static decimal pi = 3.141_592_653_589m;
 14 
 15 
 16         private int _age;    
 17         public  int Age
 18         {
 19             get => _age;
 20             ///C#语句随意使用throw语句
 21             set => _age = value <= 0 || value >= 130 ? throw new ArgumentException("参数不合法") : value;
 22         } 
 23 
 24         public string Name { get; set; } = "jefft";
 25 
 26         /// <summary>
 27         /// 解构方法
 28         /// </summary>
 29         /// <param name="name"></param>
 30         /// <param name="age"></param>
 31         public void Deconstruct(out string name, out int age)
 32         {
 33             name = Name;
 34             age = Age;
 35         }
 36 
 37         public CSharp7()
 38         {
 39 
 40         }
 41 
 42 
 43         //局部函数
 44         public static void Outer()
 45         {
 46             WriteLine("局部方法:");
 47             Inner(5);
 48             Inner(10);
 49             Inner(12);
 50 
 51            void Inner(int len= 10)
 52             {             
 53                for(var i = 0; i< len; i++)
 54                 {
 55                     Write($" {i},");
 56                 }
 57 
 58                 WriteLine();
 59             }
 60         }
 61 
 62          ~CSharp7() => Console.WriteLine("Finalized!");
 63 
 64 
 65         public static void Instance()
 66         {
 67             var item = new CSharp7();
 68             item.Age = 30;
 69             var (name, age) = item;
 70             WriteLine($"解构结果:name:{name},age: {age}");             
 71         }
 72 
 73         public static void TestNumberForamt()
 74         {
 75             WriteLine($"pi={pi}, salary={salary}, b={b}, b2={b2}");
 76         }
 77 
 78         public static void TestOutTypeVar()
 79         {
 80             WriteLine("输入一个数字:");
 81             var input = ReadLine();
 82             if (int.TryParse(input, out var result))
 83             {
 84                 WriteLine("您输入的数字是:{0}", result);
 85             }
 86             else
 87             {
 88                 WriteLine("无法解析输入...");
 89             }
 90         }
 91 
 92         public static void TestTuple()
 93         {
 94             WriteLine("Tuple::");
 95 
 96             ///默认
 97             var tuple = (12, 23);
 98             WriteLine($"{tuple.Item1},{tuple.Item2}");
 99 
100             ///左边=>解构
101             var (one, two) = (11, 22);
102             WriteLine($"{one},{two}");
103 
104             ///右边
105             var tuple2= (one: 1, two: 2);
106             WriteLine($"{tuple2.one},{tuple2.two}");
107         }
108              
109         public static void TestLoaclRef()
110         {
111             int[,] arr = { { 11, 15 }, { 22, 25 } };         
112 
113             ref var num = ref GetLocalRef(arr, c => c % 2 == 0);
114             Console.WriteLine($"原数值{arr[1, 0]}");
115             num = 600;
116             Console.WriteLine($"新数值{arr[1, 0]}");
117           
118         }
119 
120         static ref int GetLocalRef(int[,] arr, Func<int, bool> func)
121         {
122             for (int i = 0; i < arr.GetLength(0); i++)
123             {
124                 for (int j = 0; j < arr.GetLength(1); j++)
125                 {
126                     if (func(arr[i, j]))
127                     {
128                         return ref arr[i, j];
129                     }
130                 }
131             }
132 
133             throw new InvalidOperationException("Not found");
134         }
135 
136 
137         public static void TestCaseTypeVar(object item)
138         { 
139             switch(item)
140             {
141                 case int i when i< 10:
142                     WriteLine($"int类型:{i},且数字小于10");
143                     break;
144                 case int i:
145                     WriteLine($"int类型:{i},且数字大于等于10");
146                     break;
147                 case float f:
148                     WriteLine($"浮点类型:{f}");
149                     break;
150                 case string str when int.TryParse(str, out int result):
151                     WriteLine($"字符串类型转为Int类型:{result}");
152                     break;
153                 default:
154                     break;
155             }
156         }
157 
158         public static void TestIsTypeVar(object item)
159         {
160             if (item is int i && i < 10)
161             {
162                 WriteLine($"int类型:{i},且数字小于10");
163             }
164             else if (item is int i2)
165             {
166                 WriteLine($"int类型:{i2},且数字大于等于10");
167             }
168             else if (item is float f)
169             {
170                 WriteLine($"浮点类型:{f}");
171             }
172             else if (item is string str && int.TryParse(str, out int result))
173             {
174                 WriteLine($"字符串类型转为Int类型:{result}");
175             }
176         }
177     }
178 }
 1   static void Csharp7Test()
 2         {
 3             CSharp7.TestIsTypeVar("77");
 4             CSharp7.TestCaseTypeVar("88");
 5          
 6             CSharp7.TestNumberForamt();
 7             CSharp7.Outer();
 8             CSharp7.Instance();
 9             CSharp7.TestTuple();           
10             CSharp7.TestLoaclRef();
11             CSharp7.TestOutTypeVar();
12             Console.ReadKey();
13         }

C# 7.0 新特征 Demo

C# 7.0 新特征 Demo

上一篇:WebAPI 和 webservice的区别


下一篇:Delphi CreateFile函数