我有一个创建空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()可以解决问题。
答案 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();