Tag: 空的

如何更有效地使用@Nullable和@Nonnull注释

我可以看到@Nullable和@Nonnull注释有助于防止NullPointerException但是它们不会传播很远。 这些注释的有效性在一层间接后完全消失,所以如果只添加一些注释,它们就不会传播很远。 由于这些注释没有被很好地执行,所以存在假设用@Nonnull标记的值不为空并且因此不执行空检查的危险。 下面的代码会使用@Nonnull标记的参数为null而不会引发任何投诉。 它在运行时抛出一个NullPointerExceptionexception。 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(); // do stuff to x […]

如何使视图列NOT NULL

我想创build一个视图,我希望列只能是真或假。 但是,似乎无论我做什么,SQL Server(2008)都认为我的位列可以以某种方式为空。 我有一个名为“Product”的表,其中列“状态”是INT, NULL 。 在一个视图中,我想为Product中的每一行返回一行,如果Product.Status列等于3,则BIT列设置为true,否则位字段应为false。 示例SQL SELECT CAST( CASE ISNULL(Status, 0) WHEN 3 THEN 1 ELSE 0 END AS bit) AS HasStatus FROM dbo.Product 如果我将这个查询保存为一个视图并查看对象资源pipe理器中的列,则HasStatus列设置为BIT, NULL 。 但它不应该是NULL。 是否有一些神奇的SQL技巧,我可以用来强制这个列NOT NULL 。 请注意,如果我在CASE周围删除了CAST() ,则该列将被正确设置为NOT NULL ,但是该列的types将设置为INT ,这不是我想要的。 我希望它是BIT 。 🙂

在WPF绑定中将值设置为null

请看下面一行 <TextBox Text="{Binding Price}"/> 这个价格属性从上面是一个Decimal? (可为空的十进制)。 我希望如果用户删除文本框的内容(即进入空string,它应该自动更新源空(VB中没有)。 关于如何做到“Xamly”的任何想法?

为什么在C#中这个代码无效?

下面的代码将不能编译: string foo = "bar"; Object o = foo == null ? DBNull.Value : foo; 我得到: 错误1条件expression式的types无法确定,因为没有“System.DBNull”和“string”之间的隐式转换 要解决这个问题,我必须做这样的事情: string foo = "bar"; Object o = foo == null ? DBNull.Value : (Object)foo; 这个演员似乎毫无意义,因为这当然是合法的: string foo = "bar"; Object o = foo == null ? "gork" : foo; 在我看来,当三元分支是不同types的时候,编译器不会自动把值赋给types对象…但是当它们是同一types时,自动装箱是自动的。 在我看来,第一个陈述应该是合法的… 任何人都可以描述为什么编译器不允许这样做,为什么C#的devise者select这样做? 我相信这是合法的Java …虽然我没有证实这一点。 谢谢。 编辑:我要求了解为什么Java和C#处理这个不同的是,在C#中,这使得这个无效的场景下发生了什么。 我知道如何使用三元组,而不是寻找“更好的方法”来编写例子。 […]

?:有条件运算符的可空types问题

有人可以解释为什么这在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); 后一种forms给我一个编译错误“无法确定条件expression式的types,因为在'<null>'和'System.DateTime'之间没有隐式转换。 不是说我不能使用前者,但是第二种风格与我的其他代码更一致。