Hoy voy a enseñarte cómo calcular la longitud de un arreglo en C#, es decir, saber cuántos elementos contiene un arreglo.
Veremos dos métodos: uno que es el más simple, y otro que puede ser usado si quieres saber la longitud de un array en C sharp sin Length
.
La longitud de un arreglo puede saberse accediendo a la propiedad Length
del mismo. Así:
int[] arreglo = { 999, 28, 11, 96, 1, 2, 45, 0, 1 };
int longitudConLength = arreglo.Length;
Y el tipo de dato del arreglo puede ser cualquiera. Ahora te voy a enseñar cómo calcular la longitud de un arreglo sin acceder a Length en caso de que quieras saberlo o si tu profesor ha prohibido usar ese método.
Para esto podemos definir nuestra propia función, hacer un foreach e ir aumentando un contador para finalmente regresarlo como resultado de la función.
A continuación te muestro cómo hacerlo en un arreglo de tipo int, pero después te enseñaré cómo usar los genéricos para usar cualquier tipo de dato.
static int longitudDeArregloEntero(int[] arreglo)
{
int longitud = 0;
foreach (var elemento in arreglo) longitud++;
return longitud;
}
En este caso declaramos la longitud
en 0, luego recorremos el arreglo y vamos aumentando esta longitud. Finalmente en la línea 5 la regresamos. Ahora veamos el enfoque genérico para cualquier tipo de arreglo:
static int longitudDeArreglo<T>(IList<T> arreglo)
{
int longitud = 0;
foreach (var elemento in arreglo) longitud++;
return longitud;
}
En este caso en lugar de definir el tipo, definimos que será un genérico de IList<T>
justo como lo expliqué en mi post de arrays genéricos con C#.
Ya te mostré las funciones, ahora veamos cómo invocar al método que calcula la longitud del arreglo de enteros. Queda así:
static void Main(string[] args)
{
int[] arreglo = { 999, 28, 11, 96, 1, 2, 45, 0, 1 };
int longitud = longitudDeArregloEntero(arreglo);
int longitudConLength = arreglo.Length;
Console.WriteLine("La longitud según método es {0}, y según .Length es {0}", longitud, longitudConLength);
}
También puedes invocar a la función de genéricos así:
static void Main(string[] args)
{
Persona[] arreglo = { new Persona("Luis", 24), new Persona("María", 24) };
int longitud = longitudDeArreglo(arreglo);
int longitudConLength = arreglo.Length;
Console.WriteLine("La longitud según método es {0}, y según .Length es {0}", longitud, longitudConLength);
}
Fíjate en que ahora estamos invocando a longitudDeArreglo
, pero en el ejemplo anterior invocamos a longitudDeArregloEntero
; hice esto para ponerte ejemplos de cómo invocar a ambas funciones.
El código completo queda como se ve a continuación, ahí estoy definiendo la clase, colocando otros arreglos (que están comentados para que no haya problemas con el nombre de las variables) y todo lo que necesité para este post:
using System;
using System.Collections.Generic;
namespace App
{
class Persona
{
public string nombre;
public int edad;
public Persona(string nombre, int edad)
{
this.nombre = nombre;
this.edad = edad;
}
public override string ToString()
{
return "Persona con nombre " + this.nombre + " y edad " + this.edad;
}
public void saludar()
{
Console.WriteLine("Me llamo " + this.nombre);
}
}
class Programa
{
static int longitudDeArreglo<T>(IList<T> arreglo)
{
int longitud = 0;
foreach (var elemento in arreglo) longitud++;
return longitud;
}
static int longitudDeArregloEntero(int[] arreglo)
{
int longitud = 0;
foreach (var elemento in arreglo) longitud++;
return longitud;
}
/*
https://parzibyte.me/blog
*/ static void Main(string[] args)
{
// int[] arreglo = { 999, 28, 11, 96, 1, 2, 45, 0, 1 };
// string[] arreglo = { "Hola", "Mundo" };
Persona[] arreglo = { new Persona("Luis", 24), new Persona("María", 24) };
int longitud = longitudDeArreglo(arreglo);
int longitudConLength = arreglo.Length;
Console.WriteLine("La longitud según método es {0}, y según .Length es {0}", longitud, longitudConLength);
}
}
}
Por aquí te dejo más posts sobre C#.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.