gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:54:52 26 4
gpt4 key购买 nike

今天看到这个签名:

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/

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