今天看到这个签名:
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/