C#7.0新语法
【摘要】 C#7.0新语法
1、out输出参数
之前使用out参数需要提前定义变量
//必须先定义i
int i = 0;
private static void DoNothing(out int i)
{
i= 1;
}
更新后
//不必先定义result
static void Main(string[] args)
{
int.TryParse("a", out int reult);
Console.WriteLine(reult);
}
2、元组touple
元组功能在 C# 7.0 及更高版本中可用,它提供了简洁的语法,用于将多个数据元素分组成一个轻型数据结构。
(double, int) t1 = (4.5, 3);
Console.WriteLine($"Tuple with elements {t1.Item1} and {t1.Item2}.");
// Output:
// Tuple with elements 4.5 and 3.
(double Sum, int Count) t2 = (4.5, 3);
Console.WriteLine($"Sum of {t2.Count} elements is {t2.Sum}.");
// Output:
// Sum of 3 elements is 4.5.
var alphabetStart = (Alpha: "a", Beta: "b");//还可以这样声明
元组是可以改变的,类似于类的属性
(string Alpha, string Beta) namedLetters = ("a", "b");
namedLetters.Alpha = "aa";
namedLetters.Beta = "bb";
Console.WriteLine($"{namedLetters.Alpha}, {namedLetters.Beta}");
//output:
//aa,bb
同时方法返回值可以返回元组
static void Main(string[] args)
{
(int, int) a = Range();
Console.Read();
}
static (int, int) Range()
{
return (1, 2);
}
3、弃元
有如下函数,返回值为两个int和两个string类型的元组,但是在实际运行过程中,并不需要元组中所有的元素,仅接受其中的某项元素,称之为弃元。
static (int, int,string,string) Range()
{
return (1, 2,"a","b");
}
static void Main(string[] args)
{
var (_, r1, _, r2) = Range();//仅仅接受第1项与第三项
Console.Read();
}
4、模式
static void Main(string[] args)
{
int input = 123;
int sum = 234;
if (input is int count)//如果input是int类型,则count=input(count之前未定义)
sum = count;
Console.WriteLine();
Console.Read();
}
另外,模式还可以在Switch中使用
private void Switch(string text)
{
int k = 100;
switch (text)
{
case "aaa" when k > 10: // text="aaa"且k>10才会输出aaa
Console.WriteLine("aaa");
break;
case "bbb" when text.Length < 10: //text="bbbb"且text的长度<10才会输出bbb
Console.WriteLine("bbb");
break;
case string s when s.Length > 7://模式 定义变量s,s就是text的值
Console.WriteLine(s);
break;
}
5、本地函数
在方法的内部定义一个方法进行调用
public static string LocalFunction(string name)
{
return ZhxiToString(name);
string ZhxiToString(string name)
{
return name;
}
}
6、默认文本表达式
默认文本表达式是针对默认值表达式的一项增强功能。 这些表达式将变量初始化为默认值。 过去会这么编写:
Func<string, bool> whereClause = default(Func<string, bool>);
现在可以直接=default
Func<string, bool> whereClause1 = default;
string str = default;//这样也是支持的
int i = default;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)