无论如何要将通用参数默认为某种类型?

Bru*_*ant 17 c# generics

有没有办法为泛型的参数T提供默认类型,如:

class Something<T = string>
{
}
Run Code Online (Sandbox Code Playgroud)

我知道没有太多强有力的理由,但我想暗示代码客户端应该优先使用哪种类型.

另一件事,我可以将泛型类型限制为ValueType我刚看到你不能,但我仍然想知道为什么.有人有线索吗?

谢谢!

Ver*_*cas 23

好的,我想你有这个班:

class Something<T>
{

}
Run Code Online (Sandbox Code Playgroud)

现在,您可能想要另一个类:

class Something : Something<string>
{
    // NO MORE CODE NEEDED HERE!
}
Run Code Online (Sandbox Code Playgroud)

这是唯一也是最好的方式.
所以,如果使用Something他将实际使用Something<string>.

  • 这有效(fsvo"工作",而不是我一般会推荐它)因为`Something`和`Something <'>`(和`Something <','>`仍然不同)是两个*不同的*类(想象一下`system.collections.IEnumerable`和`systems.collections.generic.IEnumerable <T>`的情况 - 这与Java不同,其中基本上只允许一个"折叠"类型).另一方面,现在你有两种*不同的*类型:-) (2认同)