Почему Guid.NewGuid () генерирует пустой guid? - PullRequest
3 голосов
/ 05 декабря 2008

У меня есть вызов 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 () решило проблему.

Ответы [ 5 ]

6 голосов
/ 23 декабря 2008

Это старая проблема в VB.NET. Это только визуализатор отладки, который сломан.

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

2 голосов
/ 05 декабря 2008

У меня было то же самое. Отладка Guid.NeGuid () показала, что он пуст. Вызов .ToString () исправил ситуацию.

1 голос
/ 16 февраля 2011

Я столкнулся с этой проблемой только в VB.NET и только во время отладки. Спасибо 48494, за эту информацию.

1 голос
/ 05 декабря 2008

Я протестировал этот код в VS2008, и результаты оказались не такими, как я ожидал. Кажется, что новый guid не создается, пока не будет вызван метод toString. После пошагового выполнения кода rowPointerValue содержит строковое представление guid.

Кажется, он использует отложенное выполнение?

0 голосов
/ 14 июня 2009

Попробуйте это

Dim g As New Guid();

Dim whereDoYouWantToSeeIt As String = g.ToString();
...