Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Consigue la cuerda más larga y más corta de forma estética

Tengo las siguientes líneas en mi código. Están ocupando más lugar del que deberían. Cualquier sugerencia para un código más pequeño.

 string longestString; string shortestString; if (string1.Length > string2.Length) { longestString = string1; shortestString = string2; } else { longestString = string2; shortestString = string1; }

Lo sé, no es una pregunta realmente importante, pero esto toma 2/3 de todo el método y no las cosas importantes.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Quizás:

 int diff = string1.Length.CompareTo(string2.Length); string longestString = diff > 0 ? string1 : string2; string shortestString = diff > 0 ? string2 : string1;

Pero si tiene más de estas dos cadenas y desea una solución general, puede usar:

 var lenLookup = new[] { string1, string2 }.OrderBy(s => s.Length).ToList(); string shortestString = lenLookup.First(); string longestString = lenLookup.Last();
over 4 years ago · Santiago Trujillo Denunciar

0

Dado que su código siempre realizaría la ruta si o si no, elija una como "predeterminada" y combínela con la declaración de variable:

 string longestString = string2 string shortestString = string1; if (string1.Length > string2.Length) { longestString = string1; shortestString = string2; }

Puntos de bonificación por el hecho de que realmente inicializará esas variables.

over 4 years ago · Santiago Trujillo Denunciar

0

Bueno, podrías hacer esto para aclarar tu método;

 public string GetLongestString(string str1, string str2) { return str1.Length > str2.Length ? str1 : str2; } public string GetShortestString(string str1, string str2) { return str1.Length > str2.Length ? str2 : str1; } string longestString = GetLongestString(string1, string2); string shortestString = GetShortestString(string1, string2);

¡Y reutilízalo cuando quieras!

Diablos, hazlo aún más genial (en modo cooperativo con Tim);

 public IEnumerable<string> GetLongestStrings(params string[] strings) { //returns first string with largest length out of given argumenst int maxSize = strings.Max(str => str.Length); return strings.Where(s => s.Length == maxSize); } public IEnumerable<string> GetShortestStrings(params string[] strings) { //returns first string with shortest length out of given arguments int minSize = strings.Min(str => str.Length); return strings.Where(s => s.Length == minSize); }

Uso;

 string longestString = GetLongestStrings("str1", "str2", /*...*/ "strN").FirstOrDefault();

EDIT1: Mi primera implementación no es la más eficiente. Como sugirió Tim;

 public string GetLongestString(params string[] strings) { return strings.OrderBy(s => s.Length).First(); } public string GetShortestString(params string[] strings) { return strings.OrderByDescending(s => s.Length).First(); }

Uso;

 string longestString = GetLongestString("str1", "str2", /*...*/ "strN");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda