2010-09-15 73 views
0
string sortedcolumn = 
(dataGridView1.SortedColumn != null 
? dataGridView1.SortedColumn.Name 
: "username" 
); 

在上面statment当dataGridView1.SortedColumn==null我得到的dataGridView1.SortedColumn例外是空的,而不是获得价值"username"sortedcolumn变种。条件运算符的奇怪行为?

有什么想法?

+0

你会得到哪个影响?关于哪些代码的话?当您将其更改为常规if..else语句时是否也会发生? – rkellerm 2010-09-15 09:51:39

+3

您确定在SortedColumn而不是在dataGridView1上得到NullReferenceException吗? – 2010-09-15 09:57:04

+1

这不是空合并运算符,它是第三个条件表达式。 – leppie 2010-09-15 10:11:35

回答

2

可能的原因:

  • dataGridView1是含有null值字段或变量。

  • dataGridView1是一个返回null的属性getter。

  • SortedColumn是一个奇怪的属性getter,它返回非null的第一次,但之后null。 (非常不可能的,因为仅仅然后在调试器看着它会改变这一结果。)

  • dataGridView1SortedColumn,或Name是一个属性的getter抛出您所看到的例外。

  • dataGridView1.SortedColumn是一种重载operator!=的类型,它引发您看到的异常。

  • dataGridView1.SortedColumn.Name是一种执行implicit operator string的类型,它引发您看到的异常。