c# - 在 C# 中访问 Guid 成员

标签 c# guid

在 C++ 中,我们可以通过以下方式访问 guid 的成员:

GUID guid = {0};
CoCreateGuid(&guid);
dwRand = guid.Data1 & 0x7FFFFFFF;

C++中guid的结构是:

Data 1 - unsigned long
Data 2 - unsigned short
Data 3 - unsigned short
Data 4 - unsigned char

问题:如何翻译 C++ 代码中的第三行 (dwRand = guid.Data1 & 0x7FFFFFFF;)。换句话说 - 如何访问 guid 成员? C# 中没有这样的东西。

提前致谢!

最佳答案

你可以创建一个结构:

public struct MyGuid
{
    public int Data1;
    public short Data2;
    public short Data3;
    public byte[] Data4;

    public MyGuid(Guid g)
    {
        byte[] gBytes = g.ToByteArray();
        Data1 = BitConverter.ToInt32(gBytes, 0);
        Data2 = BitConverter.ToInt16(gBytes, 4);
        Data3 = BitConverter.ToInt16(gBytes, 6);
        Data4 = new Byte[8];
        Buffer.BlockCopy(gBytes, 8, Data4, 0, 8);
    }

    public Guid ToGuid()
    {
        return new Guid(Data1, Data2, Data3, Data4);
    }
}

现在,如果你想修改一个 Guid:

Guid g = GetGuidFromSomewhere();
MyGuid mg = new MyGuid(g);
mg.Data1 &= 0x7FFFFFFF;
g = mg.ToGuid();

关于c# - 在 C# 中访问 Guid 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679381/

相关文章:

sql-server - 使用ErrorFile选项时,同时SQL BULK INSERT生成失败

c# - 更新一个对象会以某种方式更新另一个对象

c# - 单击事件的图像预览 c# asp .net

c# - 在数以千计的 xml 文件中搜索

c# - 如何从 Win32 DLL 或 OCX 中提取 GUID

rss - PubDate/Guid 对 RSS 来说是必不可少的吗?我如何在 Yahoo! 中创建一个好的 RSS!如果来源没有为项目提供不同的日期,则管道?

c# - 包含 guid 的结构上的 Marshal.SizeOf 提供额外的字节

c# - 按颜色为条码位图着色

c# - 指定名称的 MVC 文本框未在帖子上绑定(bind)模型

c# - 使用 LINQ 获取多个节点值