Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

102
Views
Comportamiento de objetos en C#

He creado dos objetos, str y prog . Cuando imprimo ambos objetos

Salida para el Objeto 1: (La cadena se imprime)

 Web World!!

Salida para el Objeto 2: (Se imprime el nombre de la Clase)

 Program1

¿Puede alguien explicar por qué sucede esto?

 using System; using System.Text; public class Program1 { string str1; public Program1(string str2) { str1 = str2; } } public class Program { public static void Main() { StringBuilder str = new StringBuilder("Web World!!", 30); Console.WriteLine(str); Program1 prog = new Program1("Hello"); Console.WriteLine(prog); } }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Esto se debe a que el sistema no sabe cómo debe imprimir un objeto de tipo Program1, la forma de decirle al sistema cómo imprimir ese tipo es anular el método ToString en la clase Program1. Puedes hacer esto simplemente agregando:

 public override string ToString() { return str1; }

en la clase Program1. Todos los objetos de C# naturalmente tienen este método, pero solo devolverá el nombre de la clase (o algún otro valor, no estoy 100% seguro) de forma predeterminada, anulamos este método para decirle al sistema cómo formatear un objeto de tipo Program1 como una cadena, lo que permite que se imprima correctamente.

over 4 years ago · Santiago Trujillo Report

0

Console.WriteLine(prog); imprime Program1 porque

Cada clase o estructura en C# hereda implícitamente la clase Object. Por lo tanto, cada objeto en C# obtiene el método ToString, que devuelve una representación de cadena de ese objeto. (De Cómo anular el método ToString (Guía de programación de C#) )

y

Las implementaciones predeterminadas del método Object.ToString devuelven el nombre completo del tipo de objeto. (De referencia para Object.ToString Method )

Aquí hay un ejemplo de una clase ToString (del primer artículo)

 class Person { public string Name { get; set; } public int Age { get; set; } public override string ToString() { return "Person: " + Name + " " + Age; } }

Tipos de registros

Puede valer la pena mencionar los tipos de registros.

Desde registros (referencia de C#) :

Los tipos de registro tienen un método ToString generado por el compilador que muestra los nombres y valores de propiedades y campos públicos. El método ToString devuelve una cadena con el siguiente formato:

 <record type name> { <property name> = <value>, <property name> = <value>, ...}

Ejemplo

Si Program1 se convierte en un registro y str1 se convierte en una propiedad en lugar de un campo

 public record Program1 { public string Str1 { get; set; } public Program1(string str1) { Str1 = str1; } }

luego

 Program1 prog = new Program1("Hello"); Console.WriteLine(prog);

huellas dactilares

 Program1 { Str1 = Hello }
over 4 years ago · Santiago Trujillo Report

0

Cuando llama a Console.WriteLine(someArg); y someArg no es una cadena, el método ToString() se llamará automáticamente.

Como señaló @tymtam

Las implementaciones predeterminadas del método Object.ToString devuelven el nombre completo del tipo de objeto.

Su clase Program1 hereda del objeto y no anula ToString(), por lo que obtiene un nombre completo.

StringBuilder anula el método ToString que convierte su valor en una cadena y obtienes "¡¡Web World!!" cuerda

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!