gpt4 book ai didi

C# 使用 lambda 表达式委托(delegate)逆变

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

<分区>

下面的第二个测试方法不编译(无法将 lambda 表达式转换为目标类型 D1)。这是否意味着(非泛型)委托(delegate)逆变不适用于 lambda 表达式?

[TestFixture]
public class MyVarianceTests
{
private abstract class Animal {}
private class Tiger : Animal {}

private delegate Type D1(Tiger tiger);

private static Type M1(Animal animal)
{
return animal.GetType();
}

[Test]
public void ContravariantDelegateWithMethod()
{
D1 func = M1;
Type result = func(new Tiger());
Assert.AreEqual(result, typeof (Tiger));
}

[Test]
public void ContravariantDelegateWithLambda()
{
D1 func = (Animal animal) => animal.GetType();
Type result = func(new Tiger());
Assert.AreEqual(result, typeof (Tiger));
}
}

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