如何从(int)null
获得0作为整数值。
编辑1:我想创建一个函数,它会在各自的数据类型中返回null表示的默认值。
编辑2: 如何使用默认情况在场景中工作。
(int)的值
其中值可以为null或任何整数值。我不知道运行时的数据类型。 但我会保证Value应该只包含null或Integer值。
答案 0 :(得分:36)
您可以使用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 :(得分:25)
您可以使用Nullable结构
int value = new Nullable<int>().GetValueOrDefault();
您还可以使用default
关键字
int value = default(int);
第二次编辑后:
您需要一个接收任何类型参数的函数,因此将使用对象。您的功能类似于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"]);
答案 2 :(得分:2)
返回对象的强制转换实例或默认值的泛型方法可以按如下方式实现:
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
请注意,由于该方法将object作为参数,因此在与struct对象(如int)一起使用时会导致装箱。
答案 3 :(得分:0)
您不能将null
转换为int,因为int是值类型。您可以将其投射到int?
。
你想要实现的目标是什么?
答案 4 :(得分:0)
返回任何内容的泛型类的方法有效:
Class GetNull(Of T)
Public Shared Function Value() As T
Return Nothing
End Function
End Class
Debug.Print(GetNull(Of Integer).Value())
答案 5 :(得分:0)
查看这篇文章,了解编写扩展程序的最完整方法。我的方案是从NameValueCollection中提取数据。
http://hunterconcepts.com/blog/Extensions_HttpRequestFormQueryString/
答案 6 :(得分:0)
您需要返回类型Nullable(Of Integer)
。
答案 7 :(得分:0)
使用 null-coalescing运算符或 ??
示例:
int? a = null;
return a ?? 0; //this will return 0
这是C#中的新功能。如果操作数不为null,则返回左侧的操作数;否则,返回0。否则,将返回右侧操作数。