为什么Guid.NewGuid()会生成一个空的guid?

3

我有一个调用Guid.NewGuid()的代码,但是它创建了一个空的Guid。

是什么原因导致这个问题出现?如何解决?

编辑: 代码如下:

<WebMethod()> _
Public Function CreateRow(rowValue As String) as String
    Dim rowPointer As Guid = System.Guid.NewGuid()
    Dim rowPointerValue As String = rowPointer.ToString()

    Try
        Dim result as Integer = SqlHelper.ExecuteNonQuery(ConnectionString, "Sproc_Name", rowValue, rowPointer)

        Return result
    Catch ex as Exception
        Throw ex
    End Try
End Function

编辑:事实证明,rowPointer最初被传递给SqlHelper而不是rowPointerValue - 正如答案中指出的那样,这当然会被传递为空。将其更改为rowPointerValue/rowPointer.ToString()解决了问题。


再多说一点,提供一些上下文,并检查输出的位置。 - Joel Coehoorn
rowPointer.ToString()的字符串结果是什么? 还是你得到了一个空引用错误? - Jeff B
5个回答

6

2

我也遇到过同样的问题。调试Guid.NewGuid()显示为空。调用.ToString()解决了这个问题。


1

我只在VB.NET中调试时遇到过这个问题。感谢48494提供的信息。


1
我在VS2008中测试了这段代码,结果并不是我所期望的。似乎新的guid直到调用toString方法后才被创建。在逐步执行代码后,rowPointerValue确实保存了guid的字符串表示形式。
看起来它正在使用延迟执行?

0

试试这个

Dim g As New Guid();

Dim whereDoYouWantToSeeIt As String = g.ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接