gpt4 book ai didi

c# - lambda func 异常,这可能是 .Net Framework 的错误?

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

class Program
{
static void Main(string[] args)
{
var t = new TestImpl();
Console.WriteLine(t.Test(TestEnum.Value));
}
}

public class AbstractTest<T> where T:new()
{
public virtual T TestBase(TestEnum v)
{
return new T();
}
}

public class Product
{
public int Id { get; set; }
}

public enum TestEnum
{
Value
}
public class TestImpl : AbstractTest<Product>
{
public int Test(TestEnum ev)
{
Func<int> f = () =>
{
var result = base.TestBase(ev);
return result.Id;
};
return f();
}
}

大家好:

我遇到了类似代码的问题(在 .net4.0 上运行)。

它将抛出异常:尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)

if make "var result = base.TestBase(ev);"更改为“var result = this.TestBase(ev);”这将是正常的。如果不使用 lambda func,则使用 common func,如下所示:

 public class TestImpl : AbstractTest<Product>
{
public int Test(TestEnum ev)
{
Func<int> f = () =>
{
//var result = base.TestBase(ev);
// return result.Id;
return TestResult(ev);
};
return f();
}

private int TestResult(TestEnum ev)
{
var result = base.TestBase(ev);
return result.Id;
}
}

没关系。我认为是“base”或“this”指向不同的情况或其他。

谁能告诉我为什么以及发生了什么事?理论是什么?谢谢。

最佳答案

您遇到的错误通常是 64 位应用程序试图加载 32 位程序集或相反的结果。

但是,我实际上可以在没有安装 .NET 4.5 的机器上重现该问题。

匿名类生成的IL好像真的是无效的,因为ILSpy连反编译都失败了。

关于c# - lambda func 异常,这可能是 .Net Framework 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846503/

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