当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我希望"(int)null"返回0》经验,为你挑选了2个好方法。

我怎样才能得到0作为整数值(int)null.

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

编辑2: 我如何在这种情况下使用默认值.

(INT)值

其中Value可以为null或任何整数值.我不知道运行时的数据类型.但我会保证Value应该只包含null或Integer值.



1> dtb..:

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

int x = default(int);        //  == 0
string y = default(string);  //  == null
// etc.

这也适用于通用参数:

Bar Foo() {
    return new Bar(default(T));
}

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

int a = 42;
object z = a;
int b = (int?)z ?? 0;        //  == 42
int c = (int?)null ?? 0;     //  == 0


+1:你也不需要把它变成自己的功能.

2> Pierre-Alain..:

您可以使用Nullable结构

int value = new Nullable().GetValueOrDefault();

您也可以使用default关键字

int value = default(int);

第二次编辑后:

您需要一个接收任何类型参数的函数,因此将使用对象.你的功能类似于a上的Field扩展方法DataRow

public static T GetValue(object value)
{
    if (value == null || value == DBNull.Value)
        return default(T);
    else
        return (T)value;
}

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

int result = GetValue(dataRow["Somefield"]);


@ShantanuGupta像`int?`这样的可空类型提供了一个名为GetValueOrDefault()的方法.如果值不为null,则此方法返回值;如果值为null,则返回类型的默认值(对于int,为0).
推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有