什么时候newGuid()00000000-0000-0000-0000-000000000000,什么时候不是?

c#

我有一个很大的日志 C# 文件。我的客户抱怨某些 SessionId 为 00000000-0000-0000-0000-000000000000。第一种方法

public static StartServiceLog CreateStartServiceLog(string serviceName, Guid sessionId = new Guid(), Device device = null, string userId = null)
{
    if (device == null)
    {
        device = CreateDeviceInfo();
    }

    return new StartServiceLog(device, DateTime.UtcNow, sessionId, userId, new List<string>() { serviceName });
}

我称这个方法

    var session = new StartSessionLog
    {
        Sid = sessionId,
        Device = device,
        Timestamp = DateTime.UtcNow,
    };
    return session;

如何找出 SessionIds 何时将全部为零或将被覆盖?

回答

System.Guid是一个结构,而不是一个类。这意味着它的无参数构造函数不能做任何工作,因此,new Guid() == default.

structs 的默认值是所有成员都设置为默认值。在 的情况下Guid,它是一堆数字,所以它的视觉表示最终都是零。

要创建Guid具有实际值的 a,您需要调用Guid.NewGuid()静态方法。这不能在默认参数初始值设定项中完成,因此您需要更改您的方法以采用可空值 Guid?

public static void Foo(string etcetera, Guid? sessionId = null)
{
    if (sessionId == null)
    {
        sessionId = Guid.NewGuid();
    }

    // Do something with `sessionId.Value`
}


以上是什么时候newGuid()00000000-0000-0000-0000-000000000000,什么时候不是?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>