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