有無論如何創建一個動態檢索的方法,它以某種方式監視一個對象的狀態,但只需要調用一次,並將更新其結果,一旦它觀察的對象的狀態已被修改或以某種方式改變,這不等於該方法被調用之前的狀態。對象的狀態/方法的動態檢索
我有一個腳本這裏說明我的觀點:
bool isNull = false;
Object obj = new Object();
isNull = (bool)obj.ExtNull();
string reply = TestMethodA(isNull);
Console.WriteLine("Is object null? Answer: {0}. State of isNull: {1}", reply, isNull);
obj = null;
Console.WriteLine("\n\nNulling object... ");
Console.WriteLine("\n\nNew answer: ");
Console.WriteLine("\n\nIs object null? Answer: {0}. State of isNull: {1}", reply, isNull);
Console.Read();
}
public static string TestMethodA(bool isNull)
{
string str;
if (isNull)
str = "yes";
else
str = "no";
return str;
}
我們可以看到,一個對象調用鑄成一個布爾值,它滿足了方法的返回類型的擴展方法。然後將該語句分配給bool isNull變量。
然後調用一個字符串,並分配TestMethodA,它將isNull作爲其參數。一旦在方法的參數中接收到isNull,它將分析布爾值是true還是false。如果它是真的(意思是該對象爲空),則在該方法內調用的字符串變量的值爲「是」。同樣,如果不是,它將採取「不」。
該字符串然後返回,並傳回給該方法。字符串和布爾值都在Console.WriteLine方法中發佈。
發生這種情況後,obj引用變量將自身賦值爲null,失去曾經引用的值。
WriteLine語句然後發佈與之前相同的語句,分析對象的布爾值和狀態。當然,儘管對象的狀態現在爲空,但是由於C#並沒有真正的指針(真正的恥辱,真的,現在我想到了它)而沒有不安全的代碼,有沒有什麼辦法實現這個動態?
太棒了。謝謝。 – zeboidlund 2011-05-29 04:52:24