创建控制台应用程序以进行重现:
struct Test
{
public static readonly Test? Null = null;
}
class Program
{
static void Main(string[] args)
{
var t = Test.Null;
}
}
它是可编译的,但我们在运行时会有以下代码:
在mscorlib.dll中发生类型为'System.TypeLoadException‘的未经处理的异常。其他信息:无法从程序集“ConsoleApplication17,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“”ConsoleApplication17.Test“”。“”
这种方法解决了这个问题:
struct Test
{
public static Test? Null => null;
}
发布于 2016-05-13 09:40:58
这是CoreCLR中已知的实现限制-实例和静态字段布局一起完成,导致此错误。解决这个问题并不容易。
来源:Static fields should not contribute to cyclic struct layout #4049
https://stackoverflow.com/questions/37199878
复制相似问题