簡體   English   中英

為什么VS 2015允許以空格分隔的屬性,而VS 2017則不允許?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM