Me gustaría agregar o eliminar mediante programación algunos elementos a una matriz de cadenas en C#, pero manteniendo los elementos que tenía antes, un poco como la función VB ReDim Preserve.Agregar elementos a una matriz C#
Respuesta
La sugerencia obvia sería utilizar un List<string>
lugar, que ya habrá leído en las otras respuestas . Esta es definitivamente la mejor manera en un escenario de desarrollo real.
Por supuesto, quiero hacer las cosas más interesantes (mi día es), así que responderé a su pregunta directamente.
Aquí hay un par de funciones que serán Agregar y quitar elementos de una string[]
...
string[] Add(string[] array, string newValue){
int newLength = array.Length + 1;
string[] result = new string[newLength];
for(int i = 0; i < array.Length; i++)
result[i] = array[i];
result[newLength -1] = newValue;
return result;
}
string[] RemoveAt(string[] array, int index){
int newLength = array.Length - 1;
if(newLength < 1)
{
return array;//probably want to do some better logic for removing the last element
}
//this would also be a good time to check for "index out of bounds" and throw an exception or handle some other way
string[] result = new string[newLength];
int newCounter = 0;
for(int i = 0; i < array.Length; i++)
{
if(i == index)//it is assumed at this point i will match index once only
{
continue;
}
result[newCounter] = array[i];
newCounter++;
}
return result;
}
¡Gracias a todos por el tiempo dedicado a mi pregunta y por haber respondido! ¡Todos ustedes me han sido útiles! Gracias en particular a ti, ¡tu respuesta es la que estaba buscando! – Cippo
No utilice una matriz: utilice un List<T>
genérico que le permite agregar elementos dinámicamente.
Si no es una opción, puede usar Array.Copy
o Array.CopyTo
para copiar la matriz en una matriz más grande.
Use List<string>
en lugar de string[]
.
La lista le permite agregar y quitar elementos con un buen rendimiento.
Desde matrices implementan IEnumerable<T>
puede utilizar Concat
:
string[] strArr = { "foo", "bar" };
strArr = strArr.Concat(new string[] { "something", "new" });
o lo que sería más apropiado sería utilizar un tipo de colección que apoya la manipulación en línea.
Debería echar un vistazo a List
object. Las listas tienden a ser mejores para cambiar dinámicamente como desees. Las matrices no tanto ...
Se puede utilizar una colección genérica, como Lista <>
List<string> list = new List<string>();
// add
list.Add("element");
// remove
list.Remove("element");
El concepto equivalente de eliminar un elemento de una lista como de una matriz es probablemente a través del método 'RemoveAt' porque toma el valor del índice. 'Remove' elimina la primera aparición que podría desearse pero parece más complicado de controlar. – Brad
Si realmente no quiere (o no puede) usar una colección genérica en lugar de su matriz, Array.Resize es redim versión de C# 's de preservar:
var oldA = new [] {1,2,3,4};
Array.Resize(ref oldA,10);
foreach(var i in oldA) Console.WriteLine(i); //1 2 3 4 0 0 0 0 0 0
¿Qué es abaut éste:
List<int> tmpList = intArry.ToList(); tmpList.Add(anyInt); intArry = tmpList.ToArray();
Puede utilizar este fragmento:
static void Main(string[] args)
{
Console.WriteLine("Enter number:");
int fnum = 0;
bool chek = Int32.TryParse(Console.ReadLine(),out fnum);
Console.WriteLine("Enter number:");
int snum = 0;
chek = Int32.TryParse(Console.ReadLine(),out snum);
Console.WriteLine("Enter number:");
int thnum = 0;
chek = Int32.TryParse(Console.ReadLine(),out thnum);
int[] arr = AddToArr(fnum,snum,thnum);
IOrderedEnumerable<int> oarr = arr.OrderBy(delegate(int s)
{
return s;
});
Console.WriteLine("Here your result:");
oarr.ToList().FindAll(delegate(int num) {
Console.WriteLine(num);
return num > 0;
});
}
public static int[] AddToArr(params int[] arr) {
return arr;
}
espero que esto ayudará a que, simplemente cambiar el tipo
- 1. Cómo agregar elementos a la matriz C++?
- 2. Agregar elementos de una matriz
- 3. agregar elementos a la matriz de objetos
- 4. Cómo agregar elementos SortedSet de una matriz?
- 5. ¿Cómo agregar elementos a una matriz vacía en PHP?
- 6. ¿Cómo agregar elementos de una matriz de cadenas a una lista de matriz de cadenas?
- 7. C - cantidad de elementos en una matriz?
- 8. C# elementos de matriz volátil?
- 9. ¿Agregar una matriz a un diagrama?
- 10. Agregar a una matriz mientras itera
- 11. Agregar datos dinámicamente a una matriz
- 12. ¡Demasiados elementos en una matriz! ..?!
- 13. Agregar elementos NSArray
- 14. ¿Agregar elementos a un ListView?
- 15. ¿Cómo agrego elementos a una matriz en jQuery?
- 16. Iterar a través de una matriz C
- 17. Agregar elemento a la matriz en VBScript
- 18. ¿Cómo agregar todos los elementos de una matriz String a un vector en Java?
- 19. Cómo agregar elementos a una matriz (que es un elemento en el diccionario (elemento) en plist)?
- 20. Cómo agregar el controlador de eventos con argumentos a una matriz de elementos en Javascript?
- 21. Adición de valores a una C# matriz
- 22. VB - ¿Agregar a la matriz?
- 23. ¿Cómo pasar la matriz C# a C++ y devolverla a C# con elementos adicionales?
- 24. C# bucle a través de una matriz
- 25. Agregar expresiones de filtro dinámicamente a una matriz
- 26. Agregar valores de matriz a std :: multimap
- 27. C: encontrar el número de elementos en una matriz []
- 28. ¿Cómo pasar elementos de una matriz a la función variadic?
- 29. C# agregar una capa a una imagen
- 30. ¿Puede una matriz variante tener 0 elementos?
¿Qué has intentado? Esta pregunta debido a su naturaleza básica probablemente tendrá 50 respuestas en 3 minutos. Google habría sido igual de útil. –
v. V. Redim preservar era y es malo. Estás ** siempre **, sin excepción, es mejor usar un tipo de colección. Y no es frecuente que haga declaraciones absolutas como esa. –
Menos 5 parece un poco duro para esta pregunta. Luché con este concepto y la transición al pasar de VBA a C#. – Brad