条件运算符的奇怪行为?

时间:2010-09-15 09:48:22

标签: c# .net

string sortedcolumn =
( dataGridView1.SortedColumn != null
? dataGridView1.SortedColumn.Name
: "username"
);

在上述声明中dataGridView1.SortedColumn==nulldataGridView1.SortedColumn的例外情况为空,而不是将值"username"变为sortedcolumn var。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

可能的原因:

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

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

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

  • dataGridView1SortedColumnName是一个属性获取器,会抛出您看到的异常。

  • dataGridView1.SortedColumn属于重载operator!=的类型,会引发您看到的异常。

  • dataGridView1.SortedColumn.Name是一种实现implicit operator string的类型,它会抛出您看到的异常。