non-nullable相关内容
为什么在C#中不允许将null分配给DateTime?这是如何实施的?可以使用此功能使您自己的类不可为空吗? 示例: string stringTest = null; // Okay DateTime dateTimeTest = null; // Compile error 我知道我可以在C#2.0中使用DateTime?将null分配给dateTimeTest,并且可以使用解
..
我不断听到人们谈论非空引用类型如何解决这么多错误,并使编程变得如此容易。甚至null的创建者都将其称为十亿美元的错误和规范#引入了不可空类型来解决此问题。 编辑::忽略我对Spec#的评论。我误解了它的工作原理。 编辑2: ,我真的很希望有人与您争论:-) 所以我猜,在少数派中,我错了,但我不明白为什么这场辩论有任何优点。我将null视为错误查找工具。请考虑以下内容: c
..
我有一个使用受限的简单结构。该结构是在从数据库调用数据的方法中创建的。如果没有从数据库返回的数据,我希望能够返回空值,但是Visual Studio抱怨说,无法将空值转换为PackageName.StructName,因为它是非空值类型。 如何使其可为空? 解决方案 您要查看 Nullable 值类型。
..
在我的Linq中,我试图对可空字段进行内部联接.员工与部门有关系,部门可能具有EmployeeID或为空.那么,如果我只想要满足内部联接的记录(对于空的EmployeeID,则没有结果),那将是我的联接: var result = from emp in employees join dept in departments on new {
..
我曾经读过,具有可空类型是绝对的罪恶.我相信这是由创建它们的人所写的文章(在Ada中).我相信无论如何,如果默认情况下,像C#这样的语言使用了非空类型,该怎么办?您将如何替换C#或Ruby或null是可接受值的任何其他公共语言中的一些常见习语? 解决方案 我不会直截了当地宣布可空类型是邪恶的,我会提出:大多数语言将可空性移植到所有类型上,而这两个概念确实应该正交. 例如,所有非原始J
..
在Java中,我有以下方法: public Optional getFoo() { // always return some non-null value } 在Kotlin代码中,此方法的返回类型为Optional!.通过使用@Nonnull批注,我可以将其缩减为Optional(即,不再对Foo类型进行空检查了.) 是否可以对方法进行
..
如果我具有可为null的类型Xyz?,我想引用它或将其转换为不可为null的类型Xyz.在Kotlin中,惯用的方式是什么? 例如,此代码有误: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls
..
我使用IntelliJ的空检查机制来防止nullpointer崩溃。 我已经使用这个答案成功地将所有Java方法参数设置为@NonNull。 创建 package-info.java 后,用于定义包注释。所有作为该软件包的直接后代的java文件在我的Android Studio项目中都有默认@NonNull参数的方法。 明显的问题是我需要为该软件包中的所有Java类定义 @Param
..
我有一个带有以下签名的函数 public static String myFunction(@Nonnull String param) 当我用param将其称为null时,我得到以下异常: 引起:java.lang.IllegalArgumentException:com / MyClass.myFunction的@Nonnull参数'param'的参数在com.
..
使用实体框架版本4.0(或与.NET 4.0兼容的任何其他版本),我想映射此现有的关系数据库模式: 逻辑对象模型: 我已经尝试设置如下:(希望德语字幕不会太迷惑。) 实体框架给我这个错误: 错误3031:问题在映射片段...:表中的非空值列 FooBs.B FooBs 映射到可空的实体属性。 em> 在逻辑模型中, B 应为可空。但是,在数据库中,它不是,因为它驻留在
..
当配置Eclipse 4.2.0执行空分析(配置为使用 @ javax.annotation.Nonnull 等)时,以下代码将生成警告 空类型安全性:int类型的表达式需要取消选中 转换才能符合“@Nonnull Integer” class C { static void foo(int i) { bar(i); //警告 } static void bar(
..
我阅读了许多不可为空的问题和答案。看起来像是在C#(4.0)中接近非可空类型的最好方法是Jon Skeet的 NonNullable hack。 但是,似乎C ++ / CLI已经解决了很多问题, : Foo%(而不是原生C ++ Foo& )。编译器通过向参数中添加 modreq(IsImplicitlyDereferenced)来实现这一功能。尝试从C#调用这样的函数导致: '
..
我写的一系列数字数据,其中有时,该系列的值必须是空的工作算法。但是,因为这个应用程序的性能很关键,我都避免使用可空类型。我有PERF测试的算法,专门比较使用可空类型与非可空类型的业绩,并在最好的情况下可空类型的2倍速度较慢,但往往差得很远。 最经常使用的数据类型为双,目前为空所选择的替代方案是double.NaN。不过,我明白这不是对NaN值的确切的使用目的,所以我不确定是否有这个我不能
..
只是好奇 如果你去: 字符串MyString的; 其值为NULL。 不过,如果你去: INT敏; 这是什么变量在C#中的价值? 感谢 大卫 解决方案 首先,请注意,这个只适用于域,而不是局部变量 - 那些不能被读取,直到他们已经被分配,至少在C#。事实上,CLR初始化栈帧为0,如果你有一个适当的标志集
..
如何在C#创建非空值类型如int,布尔等? 解决方案 是的,这些都是名为结构。 结构是值类型,就像 INT ,布尔等 的他们有与之相关的一些规则/建议:(我认为这些是最重要的)的 一个结构传递和价值分配的,当不使用ref或出关键字...这意味着你一个结构里面把一切都将分配或传递给一个方法时被复制。这就是为什么你不应该让大的结构。 您不能定义在C#中的结构 $ B $
..
我怎样才能删除默认情况下使用EditFor助手时,加入非可空属性的文本框的默认值?我不希望这样的行为 修改 对不起,我没有提供足够的信息。 例如,如果您使用Html.EditorFor与DateTime的是它会自动文本框的值设置为1/1/0001属性。如果使用“日期时间?”(可为空),它不会,它只是离开文本框为空。 解决方案 我不得不做这样的事情对我自己的要求。我用这样的: @m
..
我想使用 @NonNull 标注在Android中,但我想不出只是做了正确的方式。 我建议你这个例子: 公共无效doStuff(@NonNull一个String){ //做的工作与S ... } 所以,当我打电话 doStuff(空)的IDE会给我一个警告。问题是,我不能依靠这个注解,因为像
..
我从Eclipse的一个警告,我知道我可以用燮preSS警告删除,但我想preFER明白是什么使得它的东西它可能为空。 package-info.java @ParametersAreNonnullByDefault 封装测试;进口javax.annotation.ParametersAreNonnullByDefault; test.java 封装测试; 公共类的测试{ 公共
..
使用实体框架4.0版本(或任何其他版本与.NET 4.0兼容),我要地图这个现有的关系型数据库模式: 这种逻辑对象模型: 我已经尝试设置如下:(我希望德国的标题不会太让人迷惑) 实体框架给了我这个错误: 错误3031:映射碎片问题...:非空列 FooBs.B 表中的 FooBs 映射到一个可空实体属性。的 在逻辑模型, B 应该是空。然而,在数据库中,它是没有,因为它驻
..
我读过许多非空的的问题和答案。它看起来像去接近非可空类型的C#(4.0)的最佳方式是全碟的非空<> 破解 但是,似乎C ++ / CLI已经解决了许多问题,通过支持托管引用:富%(而不是本地C ++ 富和放大器; )。编译器,使这项工作,加入 modreq(IsImplicitlyDereferenced)的说法。试图调用从C#的结果以这样一种功能: “<函数名>”不支持的语
..