或者如果 if 语句不返回 null - 为什么不能分配这个特定的属性。
例子:
String stringParam = "some string";
MyClass myclass = new MyClass();
myclass.MyProperty = MyMethod(out stringParam ) ? stringParam : String.Empty;
在上述行之后直接命中断点 - 我评估 MyProperty - 它为空!?
我已经三次检查了 MyMethod 的返回,它是真的(返回类型是布尔值)。并且 stringParam 正在 MyMethod 中更新。
假设我刚才所说的在某种程度上是不准确或错误的 - MyProperty 至少应该等于 String.Empty。如果 MyMethod 为真,但我的字符串正在更新 - MyProperty 应该等于“某个字符串”。
为什么它是空的?
在 MyClass 声明中,没有关于访问修饰符的复杂性。这很简单:
public class MyClass()
{
public String MyProperty;
}
注意:虽然我在命名等方面对代码进行了一些简化和修改——这段代码在语法上与我的代码相同。
我试过的
我为此改变了语法,令人惊讶的是(对我来说)它起作用了!?
if(MyMethod(out stringParam)) { myclass.MyProperty = stringParam; }
在评估时,myclass.MyProperty 现在等于预期的更新的 stringParam。
我很想解释为什么。内联 if 语句在输出参数方面的行为是否不同?