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 }