Questions tagged «nullable»

可为空的标记用于与可为空的成员或类型有关的问题。空值用于表示缺失或未知值。


6
首选哪个:Nullable <T> .HasValue或Nullable <T>!= null?
我一直使用,Nullable&lt;&gt;.HasValue因为我喜欢语义。但是,最近我正在研究别人现有的代码库,而他们只使用了这些代码库Nullable&lt;&gt; != null。 是否有理由优先使用一个,还是纯粹是偏爱? int? a; if (a.HasValue) // ... 与 int? b; if (b != null) // ...
437 c#  .net  null  nullable 

10
“ as”和可为空的类型带来的性能惊喜
我只是在修改C#中有关可空类型的第4章,并添加了有关使用“ as”运算符的部分,该部分允许您编写: object o = ...; int? x = o as int?; if (x.HasValue) { ... // Use x.Value in here } 我认为这确实很整洁,并且可以使用“ is”后跟强制类型转换来提高C#1等效项的性能-毕竟,这种方式我们只需要进行一次动态类型检查,然后进行简单的值检查。 但是,情况似乎并非如此。我在下面提供了一个示例测试应用程序,该应用程序基本上将对象数组中的所有整数相加-但该数组包含许多空引用和字符串引用以及装箱的整数。该基准测试可测量您在C#1中必须使用的代码,这些代码使用“ as”运算符,并且仅用于启动LINQ解决方案。令我惊讶的是,在这种情况下,C#1代码的速度提高了20倍-甚至LINQ代码(考虑到涉及的迭代器,我希望它也会更慢)击败了“ as”代码。 isinst可为空的类型的.NET实现真的很慢吗?是unbox.any导致问题的其他因素吗?对此还有其他解释吗?目前,感觉就像我将不得不警告不要在性能敏感的情况下使用此功能... 结果: 演员:10000000:121 身份:10000000:2211 LINQ:10000000:2143 码: using System; using System.Diagnostics; using System.Linq; class Test { const int Size = 30000000; static void Main() …

21
如何将字符串解析为可为null的int
我想在C#中将字符串解析为可为null的int。即。我想找回字符串的int值,如果无法解析,则返回null。 我有点希望这能起作用 int? val = stringVal as int?; 但这是行不通的,所以我现在的方式是编写此扩展方法 public static int? ParseNullableInt(this string value) { if (value == null || value.Trim() == string.Empty) { return null; } else { try { return int.Parse(value); } catch { return null; } } } 有更好的方法吗? 编辑: 感谢您的TryParse建议,我的确知道这一点,但效果差不多。我更想知道是否有一个内置的框架方法可以直接解析为可为null的int?
300 c#  .net  string  .net-3.5  nullable 



12
在条件表达式中检查可空布尔的最佳方法(如果…)
我想知道在对可空布尔进行条件检查时最干净,最易懂的语法是什么。 以下的编码风格是好是坏?有没有一种更好/更干净地表达条件的方法? bool? nullableBool = true; if (nullableBool ?? false) { ... } else { ... } 尤其是if(nullableBool ?? false)部分。我不喜欢这种if (x.HasValue &amp;&amp; x.Value)风格... (不确定是否曾经问过这个问题……无法在搜索中找到类似的内容)


14
如何检查对象是否可为空?
如何检查给定对象是否可为空,换句话说,如何实现以下方法... bool IsNullableValueType(object o) { ... } 编辑:我正在寻找可为空的值类型。我没有想到ref类型。 //Note: This is just a sample. The code has been simplified //to fit in a post. public class BoolContainer { bool? myBool = true; } var bc = new BoolContainer(); const BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance ; object obj; …
202 c#  .net  nullable 

9
Laravel迁移更改以使列为空
我使用unsigned创建了迁移user_id。如何user_id在新迁移中进行编辑以使其同样成功nullable()? Schema::create('throttle', function(Blueprint $table) { $table-&gt;increments('id'); // this needs to also be nullable, how should the next migration be? $table-&gt;integer('user_id')-&gt;unsigned(); }

7
如何将枚举设置为null
我有一个枚举 string name; public enum Color { Red, Green, Yellow } 如何在加载时将其设置为NULL。 name = ""; Color color = null; //error 编辑:我不好,我没有正确解释。但是所有与nullable有关的答案都是完美的。我的情况是,如果我在类中具有其他元素(如名称等)的枚举值,则该怎么做。在页面加载时,我初始化该类并尝试将值默认为null。这是场景(代码在C#中): namespace Testing { public enum ValidColors { Red, Green, Yellow } public class EnumTest { private string name; private ValidColors myColor; public string Name { get { return name; …
191 c#  enums  null  nullable 

7
可为空的对象必须具有一个值
异常描述中存在悖论:可空对象必须具有值(?!) 这就是问题: 我有一DateTimeExtended堂课 { DateTime? MyDataTime; int? otherdata; } 和一个构造函数 DateTimeExtended(DateTimeExtended myNewDT) { this.MyDateTime = myNewDT.MyDateTime.Value; this.otherdata = myNewDT.otherdata; } 运行此代码 DateTimeExtended res = new DateTimeExtended(oldDTE); 抛出一条InvalidOperationException消息: 可为空的对象必须具有一个值。 myNewDT.MyDateTime.Value-有效并且包含常规DateTime对象。 此消息是什么意思,我在做什么错? 注意oldDTE不是null。我从中删除了Value,myNewDT.MyDateTime但由于生成了setter而引发了相同的异常。

1
在Kotlin中,处理空值,引用或转换它们的惯用方式是什么
如果我有一个可为null的类型Xyz?,我想引用它或将其转换为不可为null的类型Xyz。Kotlin的惯用方式是什么? 例如,此代码是错误的: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?" 但是,如果我先检查null就是允许的,为什么? val something: Xyz? = createPossiblyNullXyz() if (something != null) { something.foo() } 假设我确定它永远不会,null该如何在不if检查的情况下更改或不对待一个值null?例如,在这里我从映射中检索一个可以保证存在的值,get()而not 的结果null。但是我有一个错误: val map = mapOf("a" to 65,"b" to 66,"c" …

5
为了在通用类型或方法“ System.Nullable <T>”中将其用作参数T,类型“ string”必须为非空类型
为什么会出现错误“类型'string'必须是不可为空的值类型,以便在通用类型或方法'System.Nullable'中将其用作参数'T'”? using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using Universe; namespace Universe { public class clsdictionary { private string? m_Word = ""; private string? m_Meaning = ""; string? Word { get { return m_Word; } set { m_Word = value; } } string? Meaning { get { …
172 c#  nullable 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.