3

我有一个正在创建空 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() 解决了问题。

4

5 回答 5

6

这是 VB.NET 中的一个老问题。只有调试可视化器损坏了。

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

于 2008-12-22T22:14:10.843 回答
2

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

于 2008-12-04T21:32:14.903 回答
1

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

它似乎正在使用延迟执行?

于 2008-12-04T21:33:39.333 回答
1

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

于 2011-02-16T17:31:55.973 回答
0

试试这个

Dim g As New Guid();

Dim whereDoYouWantToSeeIt As String = g.ToString();
于 2009-06-14T16:49:51.633 回答