我一直想知道我是否可以构建一个既可以是Guid又可以长的结构。
EntityWorker.Core
有一个名为Id
的{{1}}类型的属性。
我一直想知道我是否可以做到这一点,以便用户在结构的帮助下在Guid和Long之间做出选择。
您怎么看?这可能吗?
这就是我现在所拥有的,我真的不喜欢
System.long
答案 0 :(得分:1)
您就是这样做的:
usingSystem.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
public struct ExplicitStruct
{
[FieldOffset(0)] public Guid AGuid;
[FieldOffset(0)] public long ALong;
}
但请注意以下使用它的代码:
ExplicitStruct es = new ExplicitStruct();
es.AGuid = Guid.NewGuid();
Console.WriteLine("AGuid: {0}", es.AGuid.ToString());
es.ALong = 256;
Console.WriteLine("AGuid: {0} ALong {1}", es.AGuid.ToString(), es.ALong.ToString());
输出结果为:
设置Guid并显示:正如预期的那样。 Rhen设置了长并显示它们:oops! Guid已经改变了!当然这是预期的;设置Guid后,长度也不会为零。