C# 7.0 新特征 Demo

Posted aspdotnetmvc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 新特性3: 模式匹配

C# 7.0

从命令行编译新的 C# 版本(C# 7.0 更高版本)

如何修复“C# 7.0 语言功能”构建错误? (新结帐后,以前工作)

R语言dataframe创建新的特征(变量)行加和特征行均值特征(基于加减乘除指数模数等操作符)创建新的特征(变量)生成编码特征(基于比较操作符逻辑操作符)

使用决策树从现有特征创建新特征