26得票7回答
将非空值类型变为可空值类型

我有一个简单的结构体,它的使用范围有限。此结构体在调用数据库中的数据的方法中创建。如果从数据库中没有返回数据,我希望能够返回 null,但是 Visual Studio 提示,Cannot convert null to PackageName.StructName because it is...

23得票11回答
没有NULL,我们该怎么办?

我曾经读到,使用可空类型是一种绝对的恶习。我相信这是由创造它们的人(在Ada语言中?)所写的一篇文章。我相信这篇文章就是 无论如何,那么如果像C#这样的语言默认使用非空类型,你将如何替换一些常见的C#或Ruby等任何其他常见语言中的惯用法,其中null是可接受的值?

23得票2回答
如何在C#中实现非空引用类型?

我阅读了许多关于非空的问题和答案。在C# (4.0)中最接近非空类型的方法似乎是Jon Skeet的NonNullable<>技巧。然而,似乎C++/CLI通过支持托管引用:Foo%(而不是本地C++Foo&)已经解决了大部分问题。编译器通过向参数添加modreq(IsIm...

20得票3回答
启用数据捕获后如何在DB2中将列设置为可空

我正在使用db2版本9.7*,似乎无法通过任何直接的方式将非空列更改为可空列。 不幸的是,使用更适合开发人员的数据库的解决方案并不可行。基本上,用MySQL的话来说,我想做类似于这样的事情(其中MY_COLUMN曾经是VARCHAR(200)NOT NULL):ALTER TABLE MY_...

17得票5回答
为什么可以将非空类型与null进行比较?

如果我在C#中尝试将null赋值给非可空类型: 可能重复: C#允许将值类型与null进行比较 System.DateTime time = null; 我会得到一个编译时错误: 错误 CS0037:无法将 null 转换为 'System.DateTime',因为它是一个...

17得票2回答
在C#中,构造函数是初始化类中非空属性的唯一方式吗?

我已经在我的使用C#8的项目中启用了可空性。现在我有以下类:public class Request { public string Type { get; set; } public string Username { get; set; } public strin...

15得票6回答
C#中可空类型的替代方案

我正在编写操作数值数据系列的算法,有时系列中的某个值需要为空。但由于这是一个性能关键的应用程序,我已经避免使用可空类型。我进行了性能测试,特别是比较使用可空类型和非可空类型的性能,在最佳情况下,可空类型慢两倍,但通常更糟糕。 最常用的数据类型是double,目前选择用于替代null的是dou...

14得票2回答
非空引用类型的默认值与非空值类型的默认值

这不是我第一次关于可为空引用类型的问题,因为我已经尝试了几个月。但是,我越尝试,就越感到困惑,并且我看不到这个功能所添加的价值。 以这段代码为例string? nullableString = default(string?); string nonNullableString = defau...

14得票6回答
何时使用C#结构体(值类型)会牺牲性能?

我一直在使用结构体作为隐式验证复杂值对象的机制,以及围绕更复杂的类创建通用结构体以确保有效值。但是我对性能影响有些无知,希望你们可以帮助我解决疑惑。例如,如果我将域对象注入到值类型包装器中,是否会导致问题?为什么?我了解值类型和引用类型之间的区别,我的目标是利用值类型的不同行为。为了负责任地做...

14得票1回答
当在结构定义中显式指定类型时,无法推断类型参数T的类型。

我有一个结构体定义,其中包括以下字段: pub struct Separated<'a, I, T> { ..., // other fields, separated: NonNull<dyn 'a + Iterator<Item = T>&g...