我有某些場景(例如一個自定義類來存放Sql參數),其中可能需要或不需要使用變量。傳統上,我一直定義這些類型爲Guid?
,並在使用前使用myGuid.HasValue
檢查有效值。我應該使用Guid和Guid.Empty還是可以爲空的Guid?
當然在實踐中,我也可以使用常規的Guid
s並使用myGuid == Guid.Empty
執行有效值檢查。
爲了便於閱讀,我更喜歡第一個用法,因爲它感覺更乾淨,但是如果有人能建議這些方法之一是更好(更快,更快或者更正確),那麼我將不勝感激。
我有某些場景(例如一個自定義類來存放Sql參數),其中可能需要或不需要使用變量。傳統上,我一直定義這些類型爲Guid?
,並在使用前使用myGuid.HasValue
檢查有效值。我應該使用Guid和Guid.Empty還是可以爲空的Guid?
當然在實踐中,我也可以使用常規的Guid
s並使用myGuid == Guid.Empty
執行有效值檢查。
爲了便於閱讀,我更喜歡第一個用法,因爲它感覺更乾淨,但是如果有人能建議這些方法之一是更好(更快,更快或者更正確),那麼我將不勝感激。
如果參數在T-Sql端可以爲null,那麼我認爲Guid?
更適合自然。尤其是在與ADO.NET參數化查詢一起使用時,可以將空值類型轉換爲DBNull.Value
,當它們的值爲null
時。如果您要使用Guid.Empty
來指示null,那麼您需要檢查該條件並明確將DBNull.Value
傳遞給您的命令/查詢。例如: -
command.Parameters.AddWithValue("@guid", myNullableGuid)
與
command.Parameters.AddWithValue("@guid",
myGuid == Guid.Empty ? DBNull.Value : myGuid)
有兩個選擇之間幾乎沒有性能上的差異,否則。
我覺得Guid?
的方法好得多。只是巧合的是,默認值Guid
等於Guid.Empty
沒有實際用途,可以視爲null
值。例如,使用int
或bool
默認值與其他值沒有任何區別。 因此,恕我直言,你應該使用Guid?
保持一致。
我通常使用的聲明像如下:
Guid? objGuidStudent = null;
objGuidStudent = Students.FindByName('Oscar');
Classrooms.Add(x, y, z, objGuidStudent);
它完美,有或沒有NULL值。
如果不需要,它將永遠不會被使用? –
不是永遠不會,但例如,具有'Guid'作爲id字段的對象不會填充此字段,直到它已被保存到數據庫。 – 5arx