![](/img/trans.png)
[英]Why doesn't Visual Studio 2010 allow the use of “is null” in a linq query when VS2017 does?
[英]Why does VS 2015 allow attributes separated by spaces while VS 2017 does not?
請使用以下簡單代碼。 DoMyCode
方法應用了兩個屬性,條目之間有空格。
using System;
namespace AttributeSpaceTesting
{
class Program
{
static void Main(string[] args) { }
[Horse Cow]
static void DoMyCode() { }
}
[AttributeUsage(AttributeTargets.Method)]
class HorseAttribute : Attribute { }
[AttributeUsage(AttributeTargets.Method)]
class CowAttribute : Attribute { }
}
這是在VS 2015中針對.Net 4.6制作的。
如果您在Visual Studio 2015(更新3)中運行此代碼,它將編譯並運行,沒有錯誤或警告。
但是,在Visual Studio 2017中運行完全相同的代碼將產生以下異常:
Syntax error, ',' expected
我理解為什么會發生這種錯誤。 我希望你在屬性項之間需要逗號。 在C#5規范的第17.2節中:
屬性部分由一對方括號組成,它們圍繞一個或多個屬性的逗號分隔列表。
那么為什么這種語法在VS 2015中合法呢?
對於完整的上下文,我正在嘗試在我的團隊的單元測試項目中使用VS 2017。 我注意到這樣的線條:
[Description(@"The Test Description")]
[TestCategory("Regression"), TestCategory("Module"), TestCategory("ModuleRegression") TestMethod]
public void TC_12345_VerifyTheThingWorks()
在新的Visual Studio系統中編譯時會導致語法錯誤。
感謝Hans Passant分享了這些信息。
看來這確實是roslyn編譯器的一個錯誤 。 據報道,2016年10月,也就是同年6月VS 2015的最后一次發布。
此修復程序已進入Visual Studio 2017,這就是為什么此語法被正確報告為錯誤的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.