在VB中我能做到這一點調用了VB和C#的對象類型變量的方法
sub SetFocusControl(byref ctl as object)
ctl.Focus
end sub
在C#
編譯器抱怨對象沒有對焦方式
void SetFocusControl(ref object ctl)
{
ctl.Focus();
}
如何我可以在c#中做同樣的事嗎?
謝謝
在VB中我能做到這一點調用了VB和C#的對象類型變量的方法
sub SetFocusControl(byref ctl as object)
ctl.Focus
end sub
在C#
編譯器抱怨對象沒有對焦方式
void SetFocusControl(ref object ctl)
{
ctl.Focus();
}
如何我可以在c#中做同樣的事嗎?
謝謝
而不是使用對象,使用具有焦點方法的類型。
void SetFocusControl(Control ctl)
{
ctl.Focus();
}
而我不認爲你需要參考。
我也問你是否需要一個單獨的方法。你能否直接調用Focus方法?
ctl.Focus();
如果您不知道該類型或者是否具有Focus方法,則可以這樣做。
void SetFocusControl(object ctl)
{
Control control = ctl as Control
if (null == control)
return;
control.Focus();
}
我不能說爲什麼這個工程在VB中,但在C#中,你已經聲明ctl作爲類型對象。對象有四個公共方法ToString,GetHashcode,GetType和Equals。要在c#中執行此操作,您需要該方法接受具有Focus方法(或具有該方法的接口)的不同類型(如Control),或者在收到參數後需要進行類型轉換和檢查將對象轉換爲具有Focus方法的類型。
VB允許輕鬆進行後期綁定 - 您可以使用Option Strict更改此行爲。看到這裏 - http://msdn.microsoft.com/en-us/library/zcd4xwzs(VS.80).aspx – RichardOD 2009-07-05 14:13:08
哈維爾 - 你應該閱讀約why C# is statically typed。
謝謝,你的代碼工作正常,你是對的我不需要使用ref。 – Javier 2009-07-05 14:41:00