gpt4 book ai didi

c# - 为什么泛型类型在方法签名中出现两次?

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:23 25 4
gpt4 key购买 nike

为什么我们需要在下面的方法中使用两次类型

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);

回答你的第二个问题:

Will it not make sense to just have public void Search(<T> bo)?

这行不通,因为泛型类型不一定用作参数。它也不一定是返回类型。它可能根本不会出现在方法签名的其他地方。一个简单的例子可能是:

public bool IsType<T>(object input)
{
return input.GetType() == typeof(T);
}

在这种情况下,类型参数是绝对必要的。可能在某些情况下可以使用您建议的语法来推断,但这会导致不同情况下的各种不一致。

关于c# - 为什么泛型类型在方法签名中出现两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347126/

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