c# - "in"通用参数有什么作用?

标签 c# generics

今天看到这个签名:

public interface ISomeInterface<in T>

in 有什么影响?参数有哪些?

最佳答案

您可以阅读通用的 variance and contravariance在 .NET 4.0 中引入。 in 关键字对接口(interface)的影响是它声明它是逆变的,这意味着 T 只能用作输入法类型。您不能将它用作此接口(interface)方法的返回类型。这样做的好处是您将能够做这样的事情(如上述文章所示):

interface IProcessor<in T>  
{  
    void Process(IEnumerable<T> ts);  
}

List<Giraffe> giraffes = new List<Giraffe> { new Giraffe() };  
List<Whale> whales = new List<Whale> { new Whale() };  
IProcessor<IAnimal> animalProc = new Processor<IAnimal>();  
IProcessor<Giraffe> giraffeProcessor = animalProc;  
IProcessor<Whale> whaleProcessor = animalProc;  
giraffeProcessor.Process(giraffes);  
whaleProcessor.Process(whales);  

关于c# - "in"通用参数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6723082/

相关文章:

java泛型实例变量有界集合

c# - 当它的一些参数是委托(delegate)时,是否可以在 C# 中使用 "C++ Library Function"?

c# - 如何将函数分派(dispatch)给gui线程?

c# - 无法理解 C# 泛型

c# - 如何将通用 Tryparse 与枚举一起使用?

c# - C# 中的泛型和约定

swift - self 协议(protocol)的行为

c# - 向 SQL Server Full Text Stemmer 添加单词

c# - Windows 8 XAML Metro App 中的基本 UserControl 类

c# - 查询Json如何获取must数组内的元素