如果一行上有多个变量,则总是猜测哪个可能为空。
有时,我故意将一个内联语句分成两个语句,这样我就可以更容易地理解如果发生异常,它所指的是什么变量。
但是我认为编译器仍然可以决定将这些行合并为一个“事物”吗?那么为什么它可以区分变量,但如果在一条语句中就不能呢?
我认为确实有一个很好的理由,但是要更好地理解编译器及其底层工作;为什么不能告诉我哪个变量(或列)导致了nullref异常?
\S+ # 1 or more any character that is not a space
@ # literally @
\S+ # 1 or more any character that is not a space
vs
// NullRefException pointing to this line
if ( GetSomeItemFromX().AmountOfLolCats > GetSomeItemFromY().AmountOfLolCats )
return "yay";
一个典型的ASP.NET异常; // now I can see which method is causing problems
int amountX = GetSomeItemFromX().AmountOfLolCats;
int amountY = GetSomeItemFromY().AmountOfLolCats;
if ( amountX > amountY )
return "yay";
是哪一个?
我希望有人能教给我们有关编译器的基础知识,并更好地理解幕后发生的事情以及在该级别上所进行的权衡。