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

时间:2008-12-04 21:14:32

标签: asp.net vb.net guid

我有一个创建空Guid的Guid.NewGuid()调用。

什么会导致这样的问题,我该如何解决?

编辑:代码:

<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()可以解决问题。

5 个答案:

答案 0 :(得分:6)

这是VB.NET中的一个老问题。只有调试可视化工具才被破坏。

http://www.thesoftwaredevotional.com/2008/12/guid-visualizer-broken-in-vbnet.html

答案 1 :(得分:2)

我有同样的事情。调试Guid.NeGuid()显示它是空的。调用.ToString()修复了这种情况。

答案 2 :(得分:1)

我在VS2008中测试了这段代码,结果不符合我的预期。似乎在调用toString方法之前不会创建新的guid。单步执行代码后,rowPointerValue会保存guid的字符串表示形式。

似乎正在使用defferred执行?

答案 3 :(得分:1)

我只在VB.NET中遇到过这个问题而且只在调试时遇到过这个问题。感谢48494,获取该信息。

答案 4 :(得分:0)

试试这个

Dim g As New Guid();

Dim whereDoYouWantToSeeIt As String = g.ToString();