为什么我们需要在以下方法中使用两次type
public void Search<T>(T bo) { }
我们可以声明吗
public void Search(T bo){}.
找不到此答案?请帮忙。
提前致谢。
最佳答案
在摘要中:
public void Search<T>(T bo);
<T>
指定存在一个名为T
的类型参数。然后,T bo
指定存在类型为T
的参数,该参数在方法内部将被称为bo
。如果不包括
<T>
部分,则编译器将无法知道bo
是泛型参数,而不仅是T
类的实例。如果您知道以下内容可以实现完全相同的功能,则可能会更易于理解:
public void Search<Something>(Something bo);
如果排除了
<Something>
部分,则没有什么可以与采用称为Something
的类的实例的普通方法加以区分的:public void Search(Something bo);
回答第二个问题:
仅使用
public void Search(<T> bo)
会没有意义吗?由于通用类型不一定要使用参数,因此无法使用。也不一定是返回类型。它可能根本不会出现在方法签名的其他地方。一个简单的例子可能是:
public bool IsType<T>(object input)
{
return input.GetType() == typeof(T);
}
在这种情况下,绝对必须使用type参数。在某些情况下,可以像您建议的那样使用语法进行推断,但这会导致不同情况下的各种不一致。
关于c# - 为什么泛型类型在方法签名中出现两次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23347126/