器的新生代,我有以下代碼:如何找出如果對象是<type>或<type>
foreach (var control in this.Controls)
{
}
我想要做的事就像control.Hide()
在那裏。但this.Controls
集合中的項目不是Control
(它們是Object
)。
我似乎無法記住安全的方法來施放這個來調用hide,如果它確實是Control
類型的,那麼除此之外什麼也不做。 (我是一個移植的Delphi程序員,我一直在思考類似control is Control
。)
我沒有這樣做,因爲resharper認爲該集合的唯一其他選項是「Object」。我假定(正如我在我的問題中指出的那樣)由集合返回的值是'Object'類型的,並且可以是不同類型的類。 – Vaccano 2010-04-16 04:14:44
在這種情況下,R#是錯誤的,而且Anthong Pegram是對的。 Controls集合中的所有對象都是Control類型的,因此將迭代變量聲明爲「Control」是安全的。其他解決方案只是過分複雜的事情,這非常簡單。 – EMP 2010-04-16 04:18:07
ControlCollection是C#中的預泛型,因此不是強類型的,這就是爲什麼在var上的類型推斷拉對象而不是控制。但是,您應該可以安全地使用Control控件而不是var控件,因爲該集合實際上只能控制控件。就像如果你有一個只包含ints的ArrayList,你可以說(int i在arrayList中),即使它在技術上將項目存儲爲對象。 – 2010-04-16 04:19:14