我在C#4.5中遇到了一个奇怪的问题.
我的模型中有这个:
private DataMatrix<T> _matrix;
public DataMatrix<T> Matrix
{
get { return _matrix; }
set { _matrix = value; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个使用这个的属性:
public object SingleElement
{
get
{
if (Matrix == null) return String.Empty;
if (Matrix.ColumnCount >= 1 && Matrix.RowCount >= 1)
{
return Matrix[0, 0];
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,在调用之前SingleElement,Matrix属性为null.但它没有返回String.Empty,它转到第二个if语句.
这是我的立即窗口说:

我有点困惑.我做错了什么?
我只是在玩Actions来提取lambda表达式.
我有一个布尔变量,并根据它的值,我的lambda体应该是不同的.
但是,在这种特殊情况下,差异只是调用另一种不改变返回类型的方法.这就是我所拥有的:
Action<MyType> myLambda;
if (myBooleanCondition)
{
myLambda = x => x.ChangeBehavior();
}
else
{
myLambda = x => x.ChangeBehavior().ChangeSize();
}
Run Code Online (Sandbox Code Playgroud)
是否可以将两个lambda定义减少/合并为一个以使其更优雅?
这个项目使用C#4.0,但如果在新版本中进行了简化,请告诉我.