我想知道是否有辦法創建一個可以接受可變數據類型的方法。 有時我需要的對象傳遞給方法有時原始類型,如可以接受各種類型的方法
SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers
將這種方法的簽名是什麼樣子的?
我想知道是否有辦法創建一個可以接受可變數據類型的方法。 有時我需要的對象傳遞給方法有時原始類型,如可以接受各種類型的方法
SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers
將這種方法的簽名是什麼樣子的?
如果您事先不知道類型,並且它確實可以是任何類型,那麼object
參數適用於參考和值類型。
例子:
public static void Method(params object[] list)
{
for (int i = 0 ; i < list.Length ; i++)
Console.WriteLine(list[i]);
}
Method(1, 'a', "test");
如果你不關心的參數的方法的類型,你可以簡單地使用:
public void SomeMethod(params object[] list)
如果需要以不同方式對待類型的參數,你就必須更加具體,創建強類型的方法的幾個重載。
也可以聲明'public void SomeMethod
如果你想有一個方法來接受任何數量的任何類型的,即使是非常緩慢的,難以維護:
void Foo(params object[] arguments)
{
//Operate
}
上述方法將用於幾乎任何類型的工作,但在值類型它的情況下,將不得不裝箱,這需要處理。如果你想使你的代碼更高效一些,我建議你創建一個重載符合你的需求。
還有方法重載,你通過使用相同的名稱但不同特徵的多個方法。
public void SomeMethod(object o)
{
}
public void SomeMethod(int r, int p, int q)
{
}
這些參數是如何使用的? –
你打算如何處理這些數據?這就是*真正推動的答案。記住幾乎所有東西都是一個「對象」,所以這可能就足夠了,這取決於你實際做了什麼。 – Servy
同意Servy的上述評論,有多種選擇來實現你想要的(params變量,重載,通用方法),但是選擇哪一個取決於你可能通過的不同類型會發生什麼。 – thudbutt