Pac*_*man 2 c# xamarin.ios xamarin visual-studio-2013
我刚开始看Xamarin并下载了一个预建的联系人示例应用程序.
它不能在Visual Studio中编译,因为它充满了我以前从未见过的奇怪语法,搜索谷歌并没有结果.
例如,这很奇怪:
[JsonIgnore]
public string AddressString => string.Format(
"{0} {1} {2} {3}", Street,
!string.IsNullOrWhiteSpace(City) ? City + "," : "",
State, PostalCode);
[JsonIgnore]
public string DisplayName => ToString();
[JsonIgnore]
public string DisplayLastNameFirst => $"{LastName}, {FirstName}";
[JsonIgnore]
public string StatePostal => State + " " + PostalCode;
public override string ToString()
{
return FirstName + " " + LastName;
}
Run Code Online (Sandbox Code Playgroud)
这些奇怪的lambda表达式 - 它们是什么?他们为什么不"="?美元符号?.NET编译器将它们全部吐出.
这是另一个:
static int MatchScore(Acquaintance c, string query)
{
return new[]
{
$"{c.FirstName} {c.LastName}",
c.Email,
c.Company,
}.Sum(label => MatchScore(label, query));
}
Run Code Online (Sandbox Code Playgroud)
编译器说{和}是预期的......
在过去的5年里我错过了什么?
Gio*_*rgi 10
您看到的奇怪语法是C#6语法.您需要在VS 2015中打开项目进行编译.
第一个带有lambda表达式的是Expression Bodied Members.您可以将第一个示例重写为
public string AddressString
{
get
{
return string.Format("{0} {1} {2} {3}",
Street, !string.IsNullOrWhiteSpace(City) ? City + "," : "",
State, PostalCode);
}
}
Run Code Online (Sandbox Code Playgroud)
$ sign的第二个是字符串插值,你可以用它替换它string.Format