Trong C#/C++, tôi có thể đạt được điều này bằng cách sử dụng toán tử ternary mặc dù mã sẽ là ẩn. Bạn có chắc chắn muốn sử dụng điều này không?
if ((myObject = null (myobject.myproperty = null (myobject.myproperty.myotherproperty = null myobject.myproperty.myotherproperty.value:!?!?!? Null): null): null) = rỗng)
class MyOtherProperty
{
public string value;
}
class MyProperty
{
public MyOtherProperty myotherproperty;
}
class MyObject
{
public MyProperty myproperty;
}
Unit My mã kiểm tra:
[TestMethod()]
public void TestTernaryOperator()
{
MyObject myobject = new MyObject();
Debug.WriteLine (string.Format ("{0}, {1}", myobject != null, myobject.myproperty != null));
Debug.WriteLine(string.Format("IsNotNull = {0}", IsNotNull(myobject)));
myobject.myproperty = new MyProperty();
Debug.WriteLine (string.Format ("{0}, {1}, {2}", myobject != null, myobject.myproperty != null, myobject.myproperty.myotherproperty != null));
Debug.WriteLine(string.Format("IsNotNull = {0}", IsNotNull(myobject)));
myobject.myproperty.myotherproperty = new MyOtherProperty();
Debug.WriteLine (string.Format ("{0}, {1}, {2}, {3}", myobject != null, myobject.myproperty != null, myobject.myproperty.myotherproperty != null, myobject.myproperty.myotherproperty.value != null));
Debug.WriteLine(string.Format("IsNotNull = {0}", IsNotNull(myobject)));
myobject.myproperty.myotherproperty.value = "Hello world";
Debug.WriteLine(string.Format("{0}, {1}, {2}, {3}", myobject != null, myobject.myproperty != null, myobject.myproperty.myotherproperty != null, myobject.myproperty.myotherproperty.value != null));
Debug.WriteLine(string.Format("IsNotNull = {0}", IsNotNull(myobject)));
}
bool IsNotNull(MyObject myobject)
{
bool isNotNull = (myobject != null ? (myobject.myproperty != null ? (myobject.myproperty.myotherproperty != null ? myobject.myproperty.myotherproperty.value : null) : null) : null) != null;
return isNotNull;
}
liên quan http://stackoverflow.com/questions/2929836 –