gpt4 book ai didi

c# - 为什么泛型上的静态方法需要 Type 参数?

转载 作者:太空狗 更新时间:2023-10-29 20:57:59 26 4
gpt4 key购买 nike

public class BinarySearchTree<T>
where T : IComparable<T>
{
public static BinarySearchTree<char> InitializeSampleCharacterBST()
{
var bst = new BinarySearchTree<char>();

bst.Insert('F');
bst.Insert('B');
bst.Insert('A');
bst.Insert('D');
bst.Insert('C');
bst.Insert('G');
bst.Insert('I');
bst.Insert('H');

return bst;
}

class Program
{
static void Main(string[] args)
{
var bst = BinarySearchTree.InitializeSampleCharacterBST();
}
}

为什么这是非法的?它期望我为类的方法调用提供一个类型参数,这毫无意义。泛型类或方法在静态上下文中对类型参数没有用处。

它要我这样写调用:

var bst = BinarySearchTree<foo>.InitializeSampleCharacterBST();

无论静态方法调用返回特定类型的通用对象这一事实,foo 可以是我想要的任何类型。

最佳答案

类(class)BinarySearchTreeBinarySeachTree<Foo>是完全分开的;该语言允许泛型类型重载。也许在非泛型孪生类上声明此方法:

public static class BinarySearchTree {
public static BinarySearchTree<char> InitializeSampleCharacterBST() {...}
}
public class BinarySearchTree<T> {...} // rest of the code

否则...什么T它会用吗?如果静态方法与静态字段对话怎么办?更不用说哪个T使用,每个 T获取不同的静态字段(即 SomeType<Foo>SomeType<Bar> 具有不同的字段)。

关于c# - 为什么泛型上的静态方法需要 Type 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/999914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com