发布
社区首页 >问答首页 >我希望"(int)null“返回0

我希望"(int)null“返回0
EN

Stack Overflow用户
提问于 2010-01-19 19:57:10
回答 8查看 37.7K关注 0票数 15

如何从(int)null中获得0作为整数值。

编辑1:我想要创建一个函数,它将在它们各自的数据类型中返回null表示的默认值。

编辑2:如何在这个场景中使用默认

(Int)值

其中值可以是null或任何整数值。我不知道在运行时值的数据类型。但是我要保证,值应该包含空值或整数值。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-19 19:59:24

可以使用Nullable结构

代码语言:javascript
代码运行次数:0
复制
int value = new Nullable<int>().GetValueOrDefault();

您还可以使用default关键字

代码语言:javascript
代码运行次数:0
复制
int value = default(int);

第二版:

您需要一个接收任何类型参数的函数,因此将使用object。您的函数类似于DataRow上的DataRow扩展方法。

代码语言:javascript
代码运行次数:0
复制
public static T GetValue<T>(object value)
{
    if (value == null || value == DBNull.Value)
        return default(T);
    else
        return (T)value;
}

使用该函数,如果您想要一个int (并且您期望值是一个int),您可以这样称呼它:

代码语言:javascript
代码运行次数:0
复制
int result = GetValue<int>(dataRow["Somefield"]);
票数 27
EN

Stack Overflow用户

发布于 2010-01-19 20:02:31

可以使用default关键字获取任何数据类型的默认值:

代码语言:javascript
代码运行次数:0
复制
int x = default(int);        //  == 0
string y = default(string);  //  == null
// etc.

这也适用于泛型参数:

代码语言:javascript
代码运行次数:0
复制
Bar<T> Foo<T>() {
    return new Bar<T>(default(T));
}

如果有一个类型为object的变量可能包含nullint类型的值,则可以使用可空类型??运算符将其安全地转换为整数:

代码语言:javascript
代码运行次数:0
复制
int a = 42;
object z = a;
int b = (int?)z ?? 0;        //  == 42
int c = (int?)null ?? 0;     //  == 0
票数 43
EN

Stack Overflow用户

发布于 2018-10-24 11:52:53

使用??空合并运算符

示例:

代码语言:javascript
代码运行次数:0
复制
int? a = null;
return a ?? 0; //this will return 0

这是C#中的一个新特性。如果操作数不是null,则返回左操作数;否则,返回右操作数.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2096619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档