Tag: 可空

如何在Java中写入可空int?

我想将一个Web窗体转换为Java中的模型。 在C#中我可以写这个: <input name="id" value="" type="text"/> public class Test { public int? Id{get;set;} } 该id可以为null。 但在使用struts2的Java中,它引发了一个exception: Method "setId" failed 那么如何在Java中编写这个案例呢?

为什么我不应该总是在C#中使用可为空的types

自从.net 2.0引入这个概念以来,我一直在寻找一些很好的指导。 为什么我会想在c#中使用不可空数据types? (一个更好的问题是,为什么我不会默认select可空types,只有在明确有意义时才使用非空types。) 在非空对等体上select可空数据types是否存在“重大”性能影响? 我更喜欢检查我的值对null而不是Guid.empty,string.empty,DateTime.MinValue,<= 0等,并与一般可空types的工作。 而且我不经常select可空types的唯一原因就是我脑海中的痒感,这让我觉得这不仅仅是向后兼容,而是强制这些额外的“? 字符显式允许空值。 有没有人总是(总是)select可空types而不是非空types? 谢谢你的时间,

什么是“长”? 数据types?

我正在阅读另一个开发人员编写的代码,不知道多long? 手段: protected string AccountToLogin(long? id) { string loginName = ""; if (id.HasValue) { try {….

myNullableLong.HasValue和myNullableLong!= null是否有区别?

例如,当我有一个可空的长度时,是否有任何区别 myNullableLong.HasValue 和 myNullableLong != null …还是仅仅是“语法糖”?

为什么short null值转换为int null值与null进行比较?

当我比较可为空的short值时,编译器首先将它们转换为整数以与null进行比较。 例如,考虑这个简单的代码: short? cTestA; if (cTestA == null) { … } 它由编译器转换为: short? CS$0$0001 = cTestA; int? CS$0$0002 = CS$0$0001.HasValue ? new int?(CS$0$0001.GetValueOrDefault()) : null; if (!CS$0$0002.HasValue){ … } 这发生在所有的.NET版本,包括.NET 4。 我在这里错过了什么? 对于HasValue检查,这种双重转换的原因是什么? 跟进 我期望编译器要做的就是用.HasValue做一个简单的检查, if (cTestA.HasValue){} 。 至less这是我发现这个转换后,在我的代码中做的事情。 为什么所有这些额外的代码添加这样一个简单的testing?

不明白使用Nullabletypes的pre decrement操作符行为

好吧,对于你们中的一些人来说,这可能是显而易见的,但是我对于从这个相当简单的代码中得到的行为难以理解: public static void Main(string[] args) { int? n = 1; int i = 1; n = ++n – –i; Console.WriteLine("Without Nullable<int> n = {0}", n); //outputs n = 2 n = 1; i = 1; n = ++n – new Nullable<int>(–i); Console.WriteLine("With Nullable<int> n = {0}", n); //outputs n = 3 Console.ReadKey(); } 我预计两个输出是相同的,等于2但奇怪的是,他们没有。 […]

C#|| 运算符不能使用空的布尔值

我在我的LINQ中有以下一段代码: where (tf.Shipped || tf.Ordered || tf.Processed) 请注意,已发货,有序和已处理都是可空布尔字段 我收到以下消息: 运算符|| 不能应用于'bool'types的操作数? 和“布尔?” 不知道如何解决这个问题,他们需要是可空的布尔值,我需要使用OR(||)。

我如何解决这个问题做generics转换为Nullable <T>?

我目前使用这个方便的转换扩展方法来做types之间的转换: public static T To<T>(this IConvertible obj) { return (T)Convert.ChangeType(obj, typeof(T)); } 但是,它不喜欢将有效值转换为Nullable,例如,这将失败: "1".To<int?>(); 很显然,1很容易转换为(int?),但是却得到错误: Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'. 这是一个明显简化的例子,实际上我使用它来从stringtypes进行转换,如下所示: packageDb.Quantity = package.package.ElementDeep(Namespace + "PackageQuantity", Namespace + "ActualQuantity", Namespace + "Quantity").ValueOrNull().To<int?>(); 如果Convert.ChangeType不喜欢Nullable,任何人有任何伟大的想法?

如何使一个“结构”按定义可以为空?

struct AccountInfo { String Username; String Password; } 现在,如果我想要一个Nullable实例,我应该写: Nullable<AccountInfo> myAccount = null; 但是我想使struct Nullable的性质,它可以像这样使用(不使用Nullable<T> ): AccountInfo myAccount = null;

什么是解除操作员?

我正在看这篇文章,并正在努力遵循说明解除运营商的VB.NET的例子。 似乎没有一个等效的C#示例或教程。 我一般都没有太多的操作符重载的经验,所以试图与VB.NET相当,而读取可空types可能不是最好的开始… 任何人都可以提供解除操作符的解释,以及它们是如何被可空types使用的? 这是否意味着可以为null的types本身并不重载运算符,并且将使用它所表示的基础types的运算符? 关于解除运营商似乎没有太多的信息,所以希望这可以帮助其他人。 谢谢