C#7新语法糖
1.Switch 使用 goto 使用
var kk = 1;
switch (kk)
{
case 1:
Console.WriteLine(1);
goto case 4;
case 2:
Console.WriteLine(2);
goto case 3;
case 3:
Console.WriteLine(3);
goto default;
case 4:
Console.WriteLine(4);
goto default;
default:
Console.WriteLine("default");
break;
}
/**switch 用法, 在循环中可 分别多种类型 而且可以 进行类型,内容初步判断**/
List<object> objList = new List<object> { "1", 1, 1.22F };
var sum = 0d;
foreach (var item in objList)
{
switch (item)
{
case string str when int.TryParse(str, out int result):
sum += result;
break;
case int number:
sum += number;
break;
case float number when number > 1:
sum += number;
break;
default:
break;
}
}
Console.WriteLine(sum);
2.Object?.属性 新语法糖, 可以排除 对象为Null 的情况 , 不能排除属性为null 的情况
TmpClass1 obj1 = null; //对象为null
var int16 = obj1?.tmpAtt ?? 0;// ??0 是判断 如果属性为空,则给默认值
var str = obj1?.tmpAtt1 ?? "0";// ??0 是判断 如果属性为空,则给默认值
Console.WriteLine(int16);
Console.WriteLine(str);
int16 = 16;
Console.WriteLine($"平均成绩:{(int16 > 80 ? int16 : 0):F2}");
3.Tuple 元组使用 与 解元组,元组调整为结构体,以前是类
Tuple<int, int> tuple = new Tuple<int, int>(1, 2);
Console.WriteLine($"第一个元素item1:{tuple.Item1} 第二个元素item2:{tuple.Item2}");
(string Message, int Code) tuple7 = ("请求失败", 500);
Console.WriteLine($"第一个元素Message:{tuple7.Message} 第二个元素Code:{tuple7.Code}");
var tuple7t = (Message: "请求成功!", Code: 200);
Console.WriteLine($"第一个元素Message:{tuple7t.Message} 第二个元素Code:{tuple7t.Code}");
/**解析方法**/
var (Message, Code) = tuple7;
Console.WriteLine($"解析元组 第一个元素Message:{Message} 第二个元素Code:{Code}");
var (Item1, Item2) = tuple;
Console.WriteLine($"解析元组 第一个元素Item1:{Item1} 第二个元素Item2:{Item2}");
TmpClass1 obj1 = new TmpClass1(10, "牛牛");
var (age, name) = obj1;
Console.WriteLine($"解析元组 第一个元素age:{age} 第二个元素name:{name}");
4.参数 params 使用 可以代替数组,不过可读性不强
class Program
{
Main方法
static void Main(string[] args)
{
AnyWrite("text", 1, "abvc");
}
static void AnyWrite(params object[] data)
{
foreach (var item in data)
{
Console.WriteLine(item);
}
}
}