2009-04-14 7 views
2

Peut-on transmettre ArrayLists comme arguments aux méthodes en C#?ArrayList in C#

+0

-1. Vous avez posé cette question plus tôt: http://stackoverflow.com/questions/746898/arraylist-in-session –

Répondre

18

Absolument. Cependant, vous devriez rarement. Ces jours vous devriez presque toujours utiliser des types génériques, tels que List<T>.

En outre, lors de la déclaration des paramètres d'une méthode, il est utile d'utiliser des interfaces où vous le pouvez. Par exemple, si vous aviez une méthode comme ceci:

public void SomeMethod(ArrayList list) 

alors tout le monde appelle, il est forcé à utiliser ArrayList. Ils ne peuvent pas utiliser List<T> même s'ils le veulent. Si comme, d'autre part, vous déclarez votre méthode:

public void SomeMethod(IList list) 

alors ils peuvent utiliser les médicaments génériques, même si votre code ne sait pas à leur sujet.

+0

Je ne suis pas totalement d'accord Jon, vous ne devriez pas utiliser ArrayLists sur les interfaces publiques, bien que les tableaux puissent être utilisés en interne (portée privée) pour des raisons de performance. –

+0

Voulez-vous dire tableaux ou arrays? Je ne spécifierais pas ArrayList dans une API interne pour des raisons de performance sans preuve que c'était vraiment significatif ... pas que j'utiliserais une ArrayList de toute façon quand des génériques sont disponibles. –

+0

Liste , et les génériques en général, peuvent avoir des problèmes de sérialisation, si vous utilisez un service Web de savon, les collections sont toujours des tableaux pour cette raison. –

1

oui vous pouvez.

0

Tout type peut être passé en argument de la méthode. Qu'il soit abstrait, ou interface, ou type de valeur, ou autre.

Jon Skeet mentionne l'utilisation d'interfaces. Oui, c'est bon, mais vous avez un petit piège - vous ne pouvez pas facilement naviguer de cette méthode à son utilisation.