Hi, everyone. I am currently a VS2013 user.
During open source analysis
public int NumColumns => Bounds?NumColumns ?? 0;
I found a part that declares in form, but I'm confused because it seems to be supported from VS 2015 or later
I know what it means individually, but I'm not sure which operator should be applied first and which form.
How can I use it in vs2013 (.net 6.0)?
c# .net
Let's go back to the past.
Let's subtract =>
.
public int NumColumns => Bounds?.NumColumns ?? 0;
↓
public int NumColumns {
get { return Bounds?.NumColumns ?? 0; }
}
=>
is also used as an anonymous function (called lambda), but you can abbreviate it when the property has only getter.
Next time, let's take out ?
. The ?.
operator approaches the member only when it is not null
, and returns null if null.
↓
public int NumColumns {
get {
var result; // This is not allowed. For convenience, I used var
if (Bounds == null) {
result = null;
}
else {
result = Bounds.NumColumns ?? 0;
}
return result;
}
}
It is called null coercion. If the left side is null, write the value to the right. Let's take it out.
↓
public int NumColumns {
get {
var result; // This is not allowed. For convenience, I used var
if (Bounds == null) {
result = null;
}
else {
if (Bounds.NumColumns != null) {
result = Bounds.NumColumns;
}
else {
result = 0;
}
}
return result;
}
}
The C# version and the dotnet version are separate.
Higher versions of the dotnet allow you to write more dotnet APIs, and higher versions of the C# allow you to write more grammatical functions.
I mean, by writing Visual Studio 2015, you can create a project for Dotnet 2.0. In this case, you can use these features that do not require a higher version of the parent version C#'s grammar. I think VS 2015 was C#6? I'm confused.
Dotnet Framework 6.0 hasn't come out yet, so I think the version you wrote down is the C# version.
In other words, you can't use C# 6.0 grammar in VS 2013, but if you develop it in VS 2015 without project modification, you can use these grammar.
It comes out right away if you refer to the official site reference.
=> is a lambda expression, as you know, ?? is called the null merge operator. If Bounds.NumColumns is not null, NumColumns is Bounds.NumColumns, and Null means 0.
© 2024 OneMinuteCode. All rights reserved.