Questions tagged «nullable»

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

3
PHP7中的可空返回类型
PHP 7引入了返回类型声明。这意味着我现在可以指示返回值是某个类,接口,数组,可调用或新暗示的标量类型之一,对于函数参数而言,这是可能的。 function returnHello(): string { return 'hello'; } 通常,值并不总是存在,并且您可能返回某种类型的值或null。虽然您可以通过将参数的默认值设置为null(DateTime $time = null)来使参数为可空状态,但是似乎没有办法对返回类型执行此操作。确实是这种情况,还是我不知如何找到方法呢?这些不起作用: function returnHello(): string? { return 'hello'; } function returnHello(): string|null { return 'hello'; }

5
?的可空类型问题:条件运算符
有人可以解释为什么这在C#.NET 2.0中有效: Nullable<DateTime> foo; if (true) foo = null; else foo = new DateTime(0); ...但这不是: Nullable<DateTime> foo; foo = true ? null : new DateTime(0); 后一种形式给我带来了一个编译错误“无法确定条件表达式的类型,因为'<null>'和'System.DateTime'之间没有隐式转换。” 不是说我不能使用前一种样式,而是第二种样式与我的其余代码更加一致。

4
Objective-C中可为空,__ nullable和_Nullable之间的区别
借助Xcode 6.3,引入了新的注释,以便更好地表达Objective-C中API的意图(当然可以确保更好的Swift支持)。这些注解当然nonnull是nullable和null_unspecified。 但是使用Xcode 7时,会出现很多警告,例如: 指针缺少可为空类型说明符(_Nonnull,_Nullable或_Null_unspecified)。 除此之外,Apple使用另一种可为空性说明符,标记其C代码(source): CFArrayRef __nonnull CFArrayCreate( CFAllocatorRef __nullable allocator, const void * __nonnull * __nullable values, CFIndex numValues, const CFArrayCallBacks * __nullable callBacks); 综上所述,我们现在有以下3种不同的可空性注释: nonnull,nullable,null_unspecified _Nonnull,_Nullable,_Null_unspecified __nonnull,__nullable,__null_unspecified 即使我知道为什么以及在哪里使用哪个批注,我还是对应该使用哪种类型的批注,地点和原因感到困惑。这是我可以收集的: 对于我应该使用性质nonnull,nullable,null_unspecified。 对于我应该使用方法参数nonnull,nullable,null_unspecified。 对于C方法我应该使用__nonnull,__nullable,__null_unspecified。 对于其他情况,如双指针,我应该使用_Nonnull,_Nullable,_Null_unspecified。 但是对于为什么我们有这么多基本上执行相同操作的注释,我仍然感到困惑。 所以我的问题是: 这些注释之间的确切区别是什么?如何正确放置它们?为什么?

4
比较运算符如何与null int一起使用?
我开始学习可为空的类型,并遇到以下行为。 在尝试可为空的int时,我看到比较运算符给了我意外的结果。例如,在下面的代码中,我得到的输出是“ 1和1相等”。注意,它也不会打印“ null”。 int? a = null; int? b = 1; if (a < b) Console.WriteLine("{0} is bigger than {1}", b, a); else if (a > b) Console.WriteLine("{0} is bigger than {1}", a, b); else Console.WriteLine("both {0} and {1} are equal", a, b); 我希望任何非负整数都将大于null,我在这里遗漏了什么吗?
151 c#  nullable 

6
可空的ToString()
我到处都看到这样的构造: int? myVar = null; string test = myVar.HasValue ? myVar.Value.ToString() : string.Empty; 为什么不简单使用: string test = myVar.ToString(); 那不是完全一样吗?至少Reflector说: public override string ToString() { if (!this.HasValue) { return ""; } return this.value.ToString(); } 那么,这是正确的(较短的版本)还是我缺少什么?
142 c#  nullable 

9
如何更有效地使用@Nullable和@Nonnull注释?
我可以看到@Nullable和@Nonnull注释可能有助于防止NullPointerExceptions,但它们不会传播太远。 这些注释的有效性在一个间接级别之后会完全下降,因此,如果仅添加一些注释,它们的传播就不会太远。 由于这些注释的执行不正确,因此存在以下危险:假定标有的值@Nonnull不为空,因此不执行空值检查。 以下代码使标记@Nonnull为的参数null不会引起任何投诉。它NullPointerException在运行时抛出一个。 public class Clazz { public static void main(String[] args){ Clazz clazz = new Clazz(); // this line raises a complaint with the IDE (IntelliJ 11) clazz.directPathToA(null); // this line does not clazz.indirectPathToA(null); } public void indirectPathToA(Integer y){ directPathToA(y); } public void directPathToA(@Nonnull Integer x){ x.toString(); // …

6
C#可为空的字符串错误
private string? typeOfContract { get { return (string?)ViewState["typeOfContract"]; } set { ViewState["typeOfContract"] = value; } } 稍后在代码中,我将这样使用它: typeOfContract = Request.QueryString["type"]; 在声明typeOfContract行的声明时出现以下错误: 为了在通用类型或方法“ System.Nullable <T>”中将其用作参数“ T”,类型“字符串”必须为非空值类型 有任何想法吗?基本上,我想确保在执行操作之前该"type"存在QueryString。
136 c#  nullable 



3
在WPF绑定中将值设置为null
请看下面的一行 <TextBox Text="{Binding Price}"/> 上面的这个Price属性是一个Decimal?(可为空的十进制)。 我希望如果用户删除文本框的内容(即输入空字符串,则应使用null(在VB中为Nothing)自动更新源。 关于“ Xamly”如何做的任何想法?


9
如何将DateTime.TryParse与Nullable <DateTime>结合使用?
我想使用DateTime.TryParse方法将字符串的datetime值转换为Nullable。但是当我尝试这个: DateTime? d; bool success = DateTime.TryParse("some date text", out (DateTime)d); 编译器告诉我 'out'参数未归类为变量 不知道我需要在这里做什么。我也尝试过: out (DateTime)d.Value 那也不行。有任何想法吗?
114 c#  datetime  nullable 

7
一切可为空的C#通用类型约束
所以我有这个课: public class Foo&lt;T&gt; where T : ??? { private T item; public bool IsNull() { return item == null; } } 现在,我正在寻找一种类型约束,该约束允许我将所有内容都可以用作类型参数null。这意味着所有引用类型以及所有Nullable(T?)类型: Foo&lt;String&gt; ... = ... Foo&lt;int?&gt; ... = ... 应该是可能的。 使用class的类型约束,只允许我使用引用类型。 附加信息: 我正在编写管道和过滤器应用程序,并希望使用null引用作为传递到管道中的最后一项,以便每个过滤器都可以正常关闭,进行清理等。
111 c#  generics  nullable 

6
如何在基于块的API方法中使用非空和可空的Objective-C关键字
考虑以下方法 - (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 使用new nonnull和nullable 注解关键字,我们可以按如下方式丰富它: - (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 但我们也会收到以下警告: 指针缺少可空性类型说明符(__nonnull或__nullable) 它引用第三个参数(块一)。 该文档没有提供有关如何指定块参数的可空性的示例。它说逐字记录 只要类型是简单的对象或块指针,就可以在圆括号后立即使用非下划线形式的nullable和nonnull。 我尝试将两个关键字之一放在该块上(任何位置),但没有任何运气。还尝试了下划线前缀的变体(__nonnull和__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.