我怎样才能得到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