C# 不允許泛型型別作為屬性基底型別。 嘗試這樣做,如下所示,會導致編譯時錯誤:
<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute { } [Validates<string>] public static class StringValidation { }</code>
儘管 C# 擁有廣泛的泛型支持,但這項限制仍然讓許多人感到困惑。
CLI 規範並沒有明確禁止通用屬性。 然而,直接 IL 檢查顯示他們的創造是可能的。 這指出了源自 C# 語言本身的限制。
儘管記錄了其他屬性限制,但 C# 3 規範(第 10.1.4 節)和 ECMA C# 2 規範都沒有對此禁令提供明確的解釋。
C# 社群的領導者 Eric Lippert 建議該限制簡化了語言及其編譯器。 與它們可能引入的潛在複雜性相比,允許通用屬性所帶來的好處被認為是微不足道的。
以上是為什麼 C# 中不允許泛型類型作為屬性基底類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!