C# baies de Passage entre la classe A et de Classe B
J'essaie d'obtenir array[i]
de la classe B de ma classe A.
Dans la classe B, j'ai:
public array getArray() {
return array[i];
}
Comment puis-je obtenir le plein array
pour faire ce travail?
combobox1.items.add(getArray());
Je suis en train d'essayer cela, mais il ne fonctionne pas. Pouvez-vous s'il vous plaît répondre avec un exemple de code qui explique les deux méthodes dans des classes différentes qui envoyer et obtenir array[i]
.
- Terrible de réponses à cette question.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de donner
class A
l'accès à l'ensemble de la matrice, et pas seulement une valeur unique. Par exempleMaintenant
class A
peut consommer tous les éléments et de remplir entièrement la zone de liste modifiableBien votre exemple, vous ai-je, mais n'est pas lancé n'importe où, vous avez besoin de passer comme ceci:
Votre question n'est pas très clair, donc je vais essayer de répondre en fonction de ce que j'ai compris à votre problème.
ensuite, vous pouvez écrire du code comme celui-ci à remplir un combobox
ou
Je ne définissez des listes à l'aide de la
DataSource
membre de tous les temps, surtout quand il va partirenum
s pour les chaînes de caractères.Exemple:
Vous à la parcourir par le biais de votre tableau:
Bien que d'autres réponses sont techniquement de travail, à mon avis, on ne devrait jamais retourner un tableau interne directement, car elle va à l'encontre des bonnes pratiques en programmation orientée objet. Donc, je voudrais les mettre en œuvre interface IEnumerable de la classe ou au moins de retour IEnumerator ou IEnumerable qui ferait de la collection retournée en lecture seule.
Exemple:
Une autre solution propre est d'ajouter "Faire avec" valeurs de la fonctionnalité de la classe B. il nous suffit Alors de fournir délégué. Exemple:
La prochaine et troisième exemple montre comment faire tout ClassB énumérable avec foreach:
mise à jour: Comme ja72 montré, cette technique simple qui vient de publie l'énumérateur du tableau interne, n'est pas physiquement masquer le tableau, comme résultant de IEnumerator peuvent être précipités sur int[].
mise à jour #2: Mon frère de toujours utiliser Clone() pour retourner une copie de tableau. Il est le plus lent, mais il dit qu'il a sauvé sa carrière un peu de temps (il travaille sur un grand projet au sein d'une équipe).
class A
est un wrapper (ne peut avoir qu'une collection ou un tableau qu'il représente) ou elle retourne un tableau (masqué commeIEnumarable<>
qui peut encore endommager le tableau d'origine et est contre les principes de la programmation orientée objet (par vos commentaires). Vous pouvez toujours faireint[] list = (int[])GetValues()