问题标签 [nullable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
14668 浏览

c# - 为什么我不应该总是在 C# 中使用可为空的类型

自从 .net 2.0 中引入这个概念以来,我一直在寻找一些好的指导。

为什么我想在 C# 中使用不可为空的数据类型?(一个更好的问题是我为什么不默认选择可空类型,并且仅在明确有意义时才使用不可空类型。)

选择一个可以为空的数据类型而不是它的不可为空的对等体是否有“显着”的性能影响?

我更喜欢根据 null 而不是 Guid.empty、string.empty、DateTime.MinValue、<= 0 等检查我的值,并且通常使用可为 null 的类型。我不经常选择可空类型的唯一原因是我后脑勺发痒的感觉,这让我觉得不仅仅是向后兼容性会迫使额外的“?” 明确允许空值的字符。

有没有人总是(最总是)选择可空类型而不是不可空类型?

谢谢你的时间,

0 投票
9 回答
88868 浏览

c# - 可空类型和三元运算符:为什么是`?10:null`禁止?

我刚刚遇到一个奇怪的错误:

然后,在另一种方法中,如下所示:

很简单,如果方法返回 true,则将 10 分配给 Nullable intx。否则,将 null 分配给可为的int。但是,编译器抱怨:

错误 1 ​​无法确定条件表达式的类型,因为int和之间没有隐式转换<null>

我要疯了吗?

0 投票
2 回答
23984 浏览

c# - 具有 Nullable 值的 SqlParameter 在 ExecuteNonQuery 时给出错误?

我有一个 sql 查询,它的参数在数据库(Sql Server)中可以为空。更新方法工作正常,直到该用户在字段中输入一个空白,这会为 DataTime 对象生成一个空值(该对象可以为空)。问题是当dbCommand.ExecuteNonQuery();.

这是我为该字段构建参数的方式:

我尝试将生日的空值转换为 DBNull.Value :

但是这段代码不会编译,我得到错误:

错误 1 ​​运算符 '??' 不能应用于“System.DateTime?”类型的操作数?和'System.DBNull'

任何的想法?

0 投票
4 回答
2404 浏览

winforms - 是否有可以绑定的可为空的日期选择器?

我正在寻找像微软提供的那样的日期选择器,但它不支持空值,因为这与数据库上的一个可以为空的字段相关联,这是不可接受的。

我找到了这个,但根据页面底部的评论,它在绑定到数据库时存在问题。我的项目中也有一个我继承的,但它有类似的问题(有时它显示值,有时它不显示)。有谁知道一个有效的?

0 投票
1 回答
388 浏览

.net - 可空枚举类型的奇怪行为

我正在使用 Global.asax 通过 Application_EndRequest 事件在每个请求结束时执行日志记录。但是,我看到存储在 HTTPContext.Current.Items 集合中的某些值的一些奇怪行为。

下面是可空枚举的调试输出。可以看到有值,但是 HasValue 解析为 False?!

我猜在请求生命周期中访问 HTTPContext.Current 为时已晚 - 但它似乎有时有效,有时无效。任何人都可以更清楚地了解到底发生了什么吗?

谢谢

0 投票
1 回答
787 浏览

.net - ADO.NET 疯狂和可空类型

我好像掉进了兔子洞。我想将 ADO .NET 数据集中的数据转换为 Nullable 类型。起初我认为直接演员(int?)会做到这一点。我是多么天真。错了,大错特错。现在我正在尝试编写一个通用转换器,但我对语法感到困惑。这就是 2005 年 - 一定有人已经解决了这个问题。你?

问题是,当我尝试在转换器上使用 Nullable 类型作为约束时,出现语法错误:

目标有一个使用泛型进行所有转换的方法。这是可能的还是我必须写几个。

0 投票
6 回答
4252 浏览

c# - C# 中可空类型的替代方案

我正在编写适用于一系列数字数据的算法,有时,该系列中的一个值需要为空。但是,由于此应用程序对性能至关重要,因此我避免使用可空类型。我已经对算法进行了性能测试,专门比较了使用可空类型和不可空类型的性能,在最好的情况下,可空类型会慢 2 倍,但通常要差得多。

最常用的数据类型是 double,目前选择的 null 替代方案是 double.NaN。但是我知道这不是 NaN 值的确切预期用途,所以我不确定这是否有任何我无法预见的问题以及最佳实践是什么。

我有兴趣找出以下数据类型的最佳空替代方案:double/float、decimal、DateTime、int/long(尽管其他数据类型非常受欢迎)

编辑:我想我需要澄清我对性能的要求。通过这些算法一次处理大量数字数据需要几个小时。因此,尽管例如 10ms 或 20ms 之间的差异通常是微不足道的,但在这种情况下,它确实会对所用时间产生重大影响。

0 投票
3 回答
11757 浏览

.net - DataSet 中的可空 Int 列

我正在使用 .NET 强类型数据集,并且有一个带有可为空的 int 列(以及可为空的 DateTime 列)的表。

显然,数据集设计器存在一个错误,该错误会阻止在这些数据类型上具有可为空的列。设计器只允许“抛出异常”作为空值的默认行为。不幸的是,在数据库中使用可为空的数据类型时,空值是合法值,但在尝试从数据行中检索此值时会引发异常。

我已经看过几个关于这个问题的新闻组帖子,但还没有看到任何体面的解决这个问题的方法。

我很想听听其他人是如何处理这个问题的。

谢谢。

0 投票
3 回答
3118 浏览

.net - 转换为 Nullable从使用反射的字符串

如何使用反射从字符串转换为 Nullable?

我有以下代码可以在给定几乎任何值的情况下转换为几乎任何值类型。上面有相当多的代码来使用 IsAssignableFrom 等,所以这是最后的手段。

当我想转换为像 long? 这样的可空类型时,问题就来了。

显然,长? 类没有解析方法。

如何从 nullable 的模板类型中提取解析方法?

编辑:

这是我试图通过的一小段测试:

以及整个功能:

0 投票
3 回答
2056 浏览

reporting-services - 报表服务器 - 无法通过 Iif() 或 Switch() 显示正确的输入参数

我的文本框中有一个可以为空的布尔输入参数,其中包含以下表达式:

我正在尝试根据Sorted输入参数的值来显示它

空=“全部”

True =“已排序”

False = "未排序"

我还尝试了以下 switch 语句,但没有任何运气:

每次呈现报告时,我都会收到以下错误:

我正在使用 VS2003 和 SSR Designer v 8.0

编辑#1:每个请求

这是您要求的代码吗?