从ConcurrentDictionary继承时编译器错误

时间:2017-07-21 15:20:23

标签: c#

class Test<string, T> : System.Collections.Concurrent.ConcurrentDictionary<string, T>

上面的代码返回两个错误:

  • CS1001预期标识符

  • CS1003语法错误,','预期

但是,在测试中大写string不会产生任何错误。

class Test<String, T> : System.Collections.Concurrent.ConcurrentDictionary<string, T>

有人可以解释为什么编译器在string为小写时会产生这些错误,但在大写时不会产生这些错误?

1 个答案:

答案 0 :(得分:7)

当您编写class Test<string, T>时,您尝试定义新类型参数并命名类型参数stringstring不是某种类型的有效标识符,因为它是该语言中的保留字。 String不是该语言中的保留字;它是您提供新类型参数的有效名称,因此代码可以正常工作。

或至少,&#34;工作&#34;从某种意义上说,您现在已将您的新类型命名为String。但你实际上并不想这样做;你不希望有一个名为 String的新类型参数,你只想让你的字典中的密钥为String,所以只需不要在所有中定义新的类型参数:

class Test<T> : System.Collections.Concurrent.ConcurrentDictionary<string, T>

在相关的说明中,您可能根本不应该继承ConcurrentDictionary。它不是一种旨在继承的类型。您可能只想编写一个,并拥有自己的类型,只需将ConcurrentDictionary作为字段。