Comment étendre les tableaux en C #
Je dois faire un exercice à l'aide de tableaux. L'utilisateur doit entrer des 3 entrées (à chaque fois, des informations sur les éléments) et les entrées seront insérées dans le tableau. Puis-je afficher le tableau.
Cependant, je vais avoir un moment difficile l'augmentation de la longueur du tableau sans modification de l'information à l'intérieur; et comment puis-je permettre à l'utilisateur d'entrer un autre ensemble de l'entrée? C'est ce que j'ai à ce jour:
public string stockNum;
public string itemName;
public string price;
string[] items = new string[3];
public string [] addItem(string[] items)
{
System.Console.WriteLine("Please Sir Enter the stock number");
stockNum = Console.ReadLine();
items.SetValue(stockNum, 0);
System.Console.WriteLine("Please Sir Enter the price");
price = Console.ReadLine();
items.SetValue(price, 1);
System.Console.WriteLine("Please Sir Enter the item name");
itemName = Console.ReadLine();
items.SetValue(itemName, 2);
Array.Sort(items);
return items;
}
public void ShowItem()
{
addItem(items);
Console.WriteLine("The stock Number is " + items[0]);
Console.WriteLine("The Item name is " + items[2]);
Console.WriteLine("The price " + items[1]);
}
static void Main(string[] args)
{
DepartmentStore depart = new DepartmentStore();
string[] ar = new string[3];
//depart.addItem(ar);
depart.ShowItem();
}
Donc, ma question se résume à:
- Comment puis-je permettre à l'utilisateur de saisir plus d'un lot de l'entrée?
Par exemple, la première fois que l'utilisateur va saisir les informations à propos de l'article ( numéro de socket, le prix et le nom), mais j'ai besoin de permettre à l'utilisateur de saisir plus d'informations sur un autre article? - Comment puis-je afficher le socket num, le prix et le nom de chaque élément d'un tableau basé sur l'hypothèse que j'ai plus qu'un seul élément dans la matrice?
source d'informationauteur 3yoon af
Vous devez vous connecter pour publier un commentaire.
.NET (C#), un tableau n'est pas redimensionnable. Ce n'est pas comme en JavaScript ou PHP étaient un tableau qui est très souple et peut se prolonger avec l'arbitraire des éléments.
Par définition un défaut tableau statique est un correctif de la taille, de sorte que vous pouvez faire référence à un élément à l'intérieur par le biais de l'index. ( http://en.wikipedia.org/wiki/Array_data_structure#Array_resizing )
Mais là, vous pouvez lire au sujet de tableau dynamique. En C#, il sera le Système.Les Collections.Liste De Tableaux-Objets. ( http://en.wikipedia.org/wiki/Dynamic_array )
Donc, ce que vous avez besoin est soit la liste de tableaux-Définition ou avoir un cours normal de la liste ou liste générique. (Le système.Les Collections.Génériques.Liste)
De départ .NET Framework 3.5, pour des tableaux unidimensionnels vous pouvez utiliser
Array.Resize<T>
méthode:MSDN lien est ici.
Je pense que vous pouvez aller sur le problème de mal...
Considérer que les trois éléments (numéro de stock, des prix, et le nom) font partie d'un plus grand objet. Pour l'instant, il nous suffit de l'appeler
item
. Nous voulons stocker un certain nombre deitem
s dans une liste ou d'une matrice. Envisager d'utiliser une approche orientée-objet comme ceci:Maintenant, vous pouvez peut instancier une liste de ces objets:
Et ajouter des éléments à eux:
En supposant que votre travail vous oblige à utiliser des Tableaux et non pour les autres classes de collection, alors vous aurez à faire des choses à la dure.
Tableaux sont immuables, c'est que vous ne peut pas les changer après qu'ils ont été créés. Vous pouvez modifier le contenu, mais pas la taille du tableau. Si vous avez besoin d'augmenter ou de réduire le tableau, vous devrez créer un nouveau tableau avec le nouveau nombre d'éléments, puis de copier les éléments que vous souhaitez à partir de l'ancien tableau à la nouvelle tableau.
Par exemple, supposons que vous voulez prendre un tableau et ne copie que les éléments de même.
Ensuite, vous pouvez toujours affecter a2 retour à un
Vous pouvez utiliser
System.Collections.Generic.List<T>
qui fournit un redimensionnable collection qui a aussi un.ToArray()
méthode retourne un tableau ordinaire si vous en avez besoin.Utiliser une liste, et ensuite de les convertir en un tableau.
En fait, dans cet exemple, vous devriez avoir une classe ou structure pour StockInfo {numéro de stock, prix, nom de l'article}, alors vous devez entrer les données dans une Liste. Enfin, vous pouvez convertir StockInfo[] en utilisant la méthode ToArray de la liste.
Pouvez-vous utiliser ArrayList à la place? Il sera redimensionné en tant que de besoin.
J'ai eu le même problème, mais ne pouvait pas changer le type et avait coincé avec le Tableau depuis que j'ai été l'extension de l'existant de la classe de l'API. Voici un modèle simple méthode qui s'étend d'un tableau existant:
Veuillez noter que le ci-dessus a également initialise les éléments avec le constructeur par défaut.
Vous pourriez contourner le "problème" de ne pas être en mesure de redimensionner les tableaux à l'aide d'un tableau qui est aussi grand que le plus grand tableau vous attendre à avoir. Notez que ceci est considéré comme le piratage, qui n'est pas structuré de la programmation!
Si vous avez accès au Système.Linq ensuite, vous pouvez utiliser la pratique de la méthode d'extension Concat pour IEnumerable des objets tels que des tableaux. Ce qui vous permettra de prolonger un tableau:
Résultat:
1
2
3
4