干货来袭!C#7.0新特性(VS2017可用)的完整攻略
介绍
C# 7.0 是微软于2017年推出的一项新技术,它具有以下一些新特性:
- Tuples(元组)
- Deconstruction(解构)
- Out Var(输出变量)
- Local function(本地函数)
- Ref return and Ref locals(引用返回和引用本地变量)
- Pattern matching(匹配模式)
- Throw expressions(Throw表达式)
在接下来的文章中,我将逐一介绍每一项新特性。
Tuples(元组)
C# 7.0中的元组使得多种数据进行组合非常容易。在以前的版本中,我们可能会创建一个类或者结构体,来处理多个数据。但是现在,我们可以使用元组来优雅地处理多种数据类型,而不必创建不必要的类:
var tuple = (1, "apple", 10.5);
var a = tuple.Item1;
var b = tuple.Item2;
var c = tuple.Item3;
在这个例子中,我们创建了一个元组tuple
,它包括了一个整数、一个字符串和一个浮点数。我们使用var
将元组赋值给了t
。然后我们可以通过t.Item1
、t.Item2
和t.Item3
来访问元组中的成员。
var tuple = (1, "apple", 10.5);
(int a, string b, double c) = tuple;
在这个例子中,我们把元组tuple
解构成了三个变量a
、b
和c
,而没有使用Item1
、Item2
和Item3
。
Deconstruction(解构)
解构是元组的一个扩展功能。它可以允许开发者将元组(数组、列表等)扁平化为多个变量或常量。
var tuple = (1, "apple", 10.5);
(int a, string b, double c) = tuple;
我们可以使用解构来处理一个元组,这样就可以避免使用元组中的成员了。在这个例子中,我们创建了一个元组tuple
,并将其赋值给了三个变量a
、b
和c
。这样,我们就可以避免使用Item1
、Item2
和Item3
。
Out Var(输出变量)
out
是一个特殊修饰符,用于指示函数返回值是通过参数的引用而返回的。在C# 7.0中,我们可以使用一个新的out var
语法,这样就不需要在使用out
关键字的时候再次声明变量。
int.TryParse("123", out int i);
在这个例子中,TryParse
函数将返回值作为i
参数的引用返回。因此,我们只需要声明一个int
型变量i
,不需要再次声明类型。
Local function(本地函数)
本地函数是C# 7.0中引入的一项新特性。它可以让函数嵌套以更紧凑的方式呈现。本地函数只能在外部函数内访问,因此它们是私有的。我们可以使用本地函数来提高代码的可读性,并使代码更易于理解。
void OuterFunction(int argument)
{
LocalFunction();
void LocalFunction()
{
// Code you want to split out
}
}
在这个例子中,我们定义了一个名为LocalFunction
的本地函数。我们可以访问OuterFunction
的参数,并在LocalFunction
内部使用它。
Ref return and Ref locals(引用返回和引用本地变量)
C# 7.0支持引用返回和引用本地变量。引用返回允许我们将引用类型返回到调用方,而不是创建一个副本。引用本地变量使我们能够创建指向堆上对象的本地变量,而不是创建变量的副本。
ref int AddOneToRef(ref int i)
{
i++;
return ref i;
}
int i = 1;
ref int iRef = ref AddOneToRef(ref i);
在这个例子中,我们创建了一个名为AddOneToRef
的函数,它将一个整数的值增加1并返回这个增加后的数值的引用。我们同时将一个整数的引用赋给了一个名为iRef
的变量。
Pattern matching(匹配模式)
C# 7.0中新增了一种类型匹配的语法:模式匹配。模式匹配是一种处理条件语句、类型转换等操作的方式,它可以将一个复杂的操作简化为几行代码。
int? length = null;
if (length is null)
{
Console.WriteLine("Length is null");
}
在这个例子中,我们使用了is null模式来判断一个可空类型的值是否为null。如果为null,则打印"Length is null"。
Throw expressions(Throw表达式)
C# 7.0中,Throw表达式允许在表达式中使用throw关键字。这项功能可以简化我们的代码编写,提高代码的可读性。
string value = null;
string result = value ?? throw new ArgumentNullException(nameof(value));
在这个例子中,我们使用了Throw表达式来抛出一个名为value
的参数缺失异常。
这些就是 C# 7.0 的新特性,这些新特性使C#更加强大和灵活。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:干货来袭! C# 7.0 新特性(VS2017可用) - Python技术站