我怎樣才能得到0作爲整數值從(int)null
。我想「(int)null」返回我0
編輯1:我想創建一個函數,它會返回默認值爲null表示在其各自的數據類型。
編輯2: 我怎麼能在這種情況下工作使用默認。
(int)的值
哪裏值可以爲空或任意整數值。運行時我不知道數據類型的值。 但我會保證值應該只包含空值或整數值。
我怎樣才能得到0作爲整數值從(int)null
。我想「(int)null」返回我0
編輯1:我想創建一個函數,它會返回默認值爲null表示在其各自的數據類型。
編輯2: 我怎麼能在這種情況下工作使用默認。
(int)的值
哪裏值可以爲空或任意整數值。運行時我不知道數據類型的值。 但我會保證值應該只包含空值或整數值。
您可以使用可空結構
int value = new Nullable<int>().GetValueOrDefault();
您也可以使用default
關鍵字
int value = default(int);
繼2日編輯:
你需要一個接收任何類型的參數的函數,所以會使用對象。你的功能類似於Field<T>
擴展方法上DataRow
public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}
使用該功能,如果你想要一個int(和你期望的值是一個int),你把它想:
int result = GetValue<int>(dataRow["Somefield"]);
您不能將null
轉換爲int,因爲int是值類型。你可以把它投到int?
雖然。
你想實現什麼?
@thecoop:我想做一個通用函數來爲我返回所有數據類型的默認值。 – 2010-01-19 20:00:00
您可以使用關鍵字default
得到任何數據類型的默認值:
int x = default(int); // == 0
string y = default(string); // == null
// etc.
這適用於通用參數,以及:
Bar<T> Foo<T>() {
return new Bar<T>(default(T));
}
如果您有object
類型的變量可能含有null
或int
類型的值,可以使用nullable types和?? operator將其安全地轉換爲整數:
int a = 42;
object z = a;
int b = (int?)z ?? 0; // == 42
int c = (int?)null ?? 0; // == 0
+1:而且你也不需要使它成爲自己的功能。 – 2010-01-19 20:05:10
+1爲??運營商。 – 2010-01-19 20:28:55
+1,不知道默認關鍵字。 – iandisme 2010-01-19 21:20:22
返回對象的強制轉換實例或默認值的一般方法可以實現如下:
static T Cast<T>(object value) {
if (value is T)
return (T)value;
else
return default(T);
}
這樣,使用有效的值會產生本身的價值:
int value = Cast<int>(4); //value = 4
和空值會得到默認:
int value = Cast<int>(null); //value = 0
注意,因爲該方法需要對象作爲參數,這會在與struct對象(如int)一起使用時導致裝箱。
泛型類的方法不返回任何工作:
Class GetNull(Of T)
Public Shared Function Value() As T
Return Nothing
End Function
End Class
Debug.Print(GetNull(Of Integer).Value())
退房這個職位的基本完成方法寫的擴展,只是這事。我的場景是從一個NameValueCollection中提取數據。
http://hunterconcepts.com/blog/Extensions_HttpRequestFormQueryString/
你需要的Nullable(Of Integer)
返回類型。
我同意。無需重新發明輪子 - 使用構建語言功能 - 可爲空類型。 – 2010-01-19 20:08:38
@ Pierre-Alain Vigeant:需要關於「新Nullable().GetValueOrDefault();」的更多解釋關於它的工作原理和工作原理。我有點困惑使用不知道這種類型的語法代碼 –
2010-01-19 20:10:59
@ShantanuGupta像'int?'這樣的可空類型提供了一種名爲GetValueOrDefault()的方法。如果值不爲null,則此方法返回值,如果值不爲null,則返回該類型的默認值(對於int爲0)。 – 2010-01-19 20:12:55