如何实现C++;C#中的样式并集? 在C++中有没有实现C++风格联盟的方法?我还需要将这个“联合”序列化到磁盘。
在C中无法实现C风格的联合,但可以实现具有联合语义的东西 在这一点上,你真正需要问自己的问题是:你首先需要C型工会的确切原因是什么?这个问题的答案可能会引导你进入下一个问题 C风格的联合解决了一个在C环境中有意义的问题,在C环境中,内存非常稀疏,类型系统不是很严格,就像.NET一样如何实现C++;C#中的样式并集? 在C++中有没有实现C++风格联盟的方法?我还需要将这个“联合”序列化到磁盘。,c#,windows-8,windows-runtime,C#,Windows 8,Windows Runtime,在C中无法实现C风格的联合,但可以实现具有联合语义的东西 在这一点上,你真正需要问自己的问题是:你首先需要C型工会的确切原因是什么?这个问题的答案可能会引导你进入下一个问题 C风格的联合解决了一个在C环境中有意义的问题,在C环境中,内存非常稀疏,类型系统不是很严格,就像.NET一样 在C++中,你可以使用结构和属性来获得联合语义,但是你应该仔细考虑你要解决的潜在问题! 没有办法在C#中实现C风格的并集,但是可以实现具有并集语义的东西 在这一点上,你真正需要问自己的问题是:你首先需要C型工会的确切
<>在C++中,你可以使用结构和属性来获得联合语义,但是你应该仔细考虑你要解决的潜在问题! 没有办法在C#中实现C风格的并集,但是可以实现具有并集语义的东西 在这一点上,你真正需要问自己的问题是:你首先需要C型工会的确切原因是什么?这个问题的答案可能会引导你进入下一个问题 C风格的联合解决了一个在C环境中有意义的问题,在C环境中,内存非常稀疏,类型系统不是很严格,就像.NET一样
<>在C++中,你可以使用结构和属性来获得联合语义,但是你应该仔细考虑你要解决的潜在问题! 您可以使用
StructLayoutAttribute
和FieldOffsetAttribute
对其进行模拟:
[StructLayout(LayoutKind.Explicit)]
struct ExampleStruct
{
[FieldOffset(0)]
public int a;
[FieldOffset(0)]
public int b;
[FieldOffset(0)]
public int c;
[FieldOffset(0)]
public int d;
}
C#对他们没有直接的支持。。但这会让你更亲近。请参阅此MSDN示例:
至于你将如何去序列化它。。我自己还没有尝试过(没有必要…。您可以使用
StructLayoutAttribute
和FieldOffsetAttribute
模拟它:
[StructLayout(LayoutKind.Explicit)]
struct ExampleStruct
{
[FieldOffset(0)]
public int a;
[FieldOffset(0)]
public int b;
[FieldOffset(0)]
public int c;
[FieldOffset(0)]
public int d;
}
C#对他们没有直接的支持。。但这会让你更亲近。请参阅此MSDN示例:
至于你将如何去序列化它。。我自己还没有尝试过(没有必要……。
dynamic
可以被视为有点接近union,因为这种类型的变量可以容纳任何东西
dynamic a = 3;
a = "test";
dynamic
可以被认为有点接近于union,因为这种类型的变量可以容纳任何东西
dynamic a = 3;
a = "test";
你为什么要这么做?您可能还可以使用其他语言功能来代替哪些功能?谢谢你为什么要这么做?您可能还可以使用其他语言功能来代替哪些功能?Thx EitanBIf,你知道C++联盟是什么,你知道C,实际上没有多少解释这个代码。@威利西蒙斯,当问题被问到,OP需要解释,至少在C语言上,我猜你知道C++联盟是什么,你知道C,对这段代码没有太多的解释。OP需要解释,至少在C#上,我想我想我想在文件中存储可以是Diverenet结构类型的数据:struct ABC{[FieldOffset(0)]public Class1 Class1;public Class2 Class2;public Class3 Class3;}但是要有Class1,classI想在文件中存储可以是Diverenet结构类型的数据:struct ABC{[FieldOffset(0)]public Class1 Class1;public Class2 Class2;public Class3 Class3;}但是为了拥有Class1,Class3非常感谢,但是我试图在变量方面做一些更复杂的事情:我想将数据存储在一个文件中,可以是Diverenet结构类型:[StructLayout(LayoutKind.Explicit)]struct ABC{[FieldOffset(0)]public Class1 Class1;[FieldOffset(0)]public Class2 Class2;[FieldOffset(0)]public Class3 Class3;}但此方法适用于可以计算每个变量将占用的内存量的简单类型:(非常感谢,但是我正试图在变量方面做一些更复杂的事情:我想将数据存储在一个文件中,该文件可以是diffrenet结构类型:[StructLayout(LayoutKind.Explicit)]struct ABC{[FieldOffset(0)]public Class1 Class1;[FieldOffset(0)]public Class2 Class2;[FieldOffset(0)]public Class3 Class3;}但此方法适用于简单类型,您可以计算每个变量将占用的内存量:(