我刚开始研究 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;
}
这些奇怪的 lambda 表达式 - 它们是什么?为什么他们不是“=”?还有$符号? .NET 编译器将它们全部吐出。
这是另一个:
static int MatchScore(Acquaintance c, string query)
{
return new[]
{
$"{c.FirstName} {c.LastName}",
c.Email,
c.Company,
}.Sum(label => MatchScore(label, query));
}
编译器说 { 和 } 是预期的......
过去 5 年我错过了什么???
最佳答案
您看到的奇怪语法是 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);
}
}
第二个带$符号的是string interpolation您可以将其替换为 string.Format
关于c# - Xamarin 示例项目未编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530151/