相关疑难解决方法(0)

可能是Visual Studio 2015中的C#编译器错误

我认为这是一个编译器错误.

使用VS 2015编译时,以下控制台应用程序编译并执行完美:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = MyStruct.Empty;
        }

        public struct MyStruct
        {
            public static readonly MyStruct Empty = new MyStruct();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是现在它变得很奇怪了:这个代码编译,但它会TypeLoadException在执行时抛出.

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = MyStruct.Empty;
        }

        public struct MyStruct
        {
            public static readonly MyStruct? Empty = null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你遇到同样的问题吗?如果是这样,我将在Microsoft提出问题.

代码看起来毫无意义,但我用它来提高可读性并实现消歧.

我有不同的重载方法,如

void DoSomething(MyStruct? arg1, string arg2)

void DoSomething(string arg1, string arg2) …

c# compiler-bug roslyn visual-studio-2015 coreclr

28
推荐指数
2
解决办法
1535
查看次数

静态成员导致struct布局中的Cycle

public struct MyStruct {
    static MyStruct? myProperty;
}
Run Code Online (Sandbox Code Playgroud)

试图编译这将给我错误:
Struct member 'myStruct.myProperty' causes a cycle in the struct layout.

从我收集的内容来看,这个错误通常发生在一个struct 的实例包含它自己的struct作为属性时(这对我来说很有意义).
但在这里,它是一个静态属性,所以我不知道这样的递归是如何发生的.另外,只有在声明Nullable结构时才会发生错误,声明静态非可空是安全的.

究竟发生了什么会导致一个循环?


编辑:
我确实发现了我认为是重复的问题; 它解释了为什么当实例具有自己类型的成员时发生递归,但这是关于静态成员的.我从经验中知道struct可以拥有自己类型的静态成员,这些成员在运行时不会中断,这个特定的代码似乎只是因为静态成员是Nullable而中断.

其次,多个人马上告诉我代码为他们编译; 似曾相识,我正在使用的c#的"版本"是针对Unity的,所以我认为这是他们的编译器的另一个错误,我将向他们提出这个问题.
@Evk指出这实际上是一个常见问题:https: //github.com/dotnet/roslyn/issues/10126

c# struct nullable static-members

10
推荐指数
1
解决办法
338
查看次数

C#中的值类型类定义?

是否可以创建一个不是结构但是值类型的类,或者像一个值类型,因为它在传递时复制而不是通过引用传递.

编辑:

很抱歉在被问到后需要编辑的问题.

另外,请参阅此问题以获取更多信息. 在不存在的结构布局中循环

c# struct types reference

1
推荐指数
1
解决办法
3087
查看次数

结构类型的大小

c#中的结构是否有固定的大小?那就是为什么以下代码:

struct Person
{
    Person child;
}
Run Code Online (Sandbox Code Playgroud)

会造成无限循环问题吗?或者因为结构类型包含其正确的值而不是引用?

c# struct

0
推荐指数
1
解决办法
96
查看次数

如何引用自身内部的struct实例?

例如,说我想做一个遗传学模拟器,我有这个非常简单的结构

public struct person{
    string name;
    int age;
    string hairColor; 

    person father;
    person mother;
}
Run Code Online (Sandbox Code Playgroud)

这样以后我就可以用Joey.father.haircolor引用这个人Joey父母的头发颜色了吗?我不断收到错误消息:

Struct Member 'person.father' of type 'person' causes a cycle in the struct layout
Run Code Online (Sandbox Code Playgroud)

我是上课的唯一选择吗?为了提高速度,我宁愿使用结构,因为它是所有数据,但是如果没有其他选择,我显然可以使用类。

c# struct

0
推荐指数
1
解决办法
1749
查看次数