C#Struct或类似的东西

时间:2018-01-06 16:35:33

标签: c# database struct long-integer guid

我一直想知道我是否可以构建一个既可以是Guid又可以长的结构。

EntityWorker.Core有一个名为Id的{​​{1}}类型的属性。

我一直想知道我是否可以做到这一点,以便用户在结构的帮助下在Guid和Long之间做出选择。

您怎么看?这可能吗?

这就是我现在所拥有的,我真的不喜欢

System.long

1 个答案:

答案 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());

输出结果为:

enter image description here

设置Guid并显示:正如预期的那样。 Rhen设置了长并显示它们:oops! Guid已经改变了!当然这是预期的;设置Guid后,长度也不会为零。