c# string tostring

tostring c# format



Diferencia entre.ToString y "como cadena" en C# (8)

¿Cuál es la diferencia entre usar las dos afirmaciones siguientes? Me parece que el primer "como cadena" es un tipo de conversión, mientras que el segundo ToString es una llamada real a un método que convierte la entrada en una cadena. Solo estoy buscando información si es que hay alguna.

Page.Theme = Session["SessionTheme"] as string; Page.Theme = Session["SessionTheme"].ToString();


El primero devuelve la clase como una cadena si la clase es una cadena o derivada de una cadena (devuelve nulo si no tiene éxito).

El segundo invoca el método ToString () en la clase.


En primer lugar, " any-object como cadena " y " any-object.ToString () " son cosas completamente diferentes en términos de su contexto respectivo.

string str = any-object as string;

1) Esto arrojará cualquier objeto como tipo de cadena y si any-object no se puede convertir en cadena, esta declaración devolverá nulo sin arrojar ninguna excepción.
2) Este es un servicio de compilación.
3) Esto funciona bastante bien para cualquier otro tipo que no sea cadena, por ejemplo: puede hacerlo como cualquier objeto como Empleado, donde el empleado es una clase definida en su biblioteca.

string str = any-object.ToString();

1) Esto llamará a ToString () de any-object desde type-defination. Como System.Object define el método ToString (), cualquier clase en .Net framework tiene el método ToString () disponible para over-riding. El programador omitirá ToString () en cualquier clase de objeto o estructura defination y escribirá el código que devuelve una representación de cadena adecuada de cualquier objeto de acuerdo con la responsabilidad y el rol desempeñado por cualquier objeto.
2) Al igual que puede definir un empleado de clase y anular el método ToString () que puede devolver la representación de cadena del objeto Employee como "FIRSTNAME - LASTNAME, EMP-CDOE".

Tenga en cuenta que el programador tiene control sobre ToString () en este caso y no tiene nada que ver con el moldeado o la conversión de tipos.


En realidad, la mejor manera de escribir el código anterior es hacer lo siguiente:

if (Session["SessionTheme"] != null) { Page.Theme = Session["SessionTheme"].ToString(); }

De esta manera, está casi seguro de que no lanzará una NullReferenceException.


La palabra clave as verificará básicamente si el objeto is una instancia del tipo, utilizando el código de operación MSIL debajo del capó. Si lo es, devuelve la referencia al objeto, sino una referencia nula.

Como muchos dicen, no intenta realizar un reparto como tal, lo que implica algún tipo de manejo de excepciones. No tan.

ToString() , simplemente llama al método ToString() del objeto, ya sea uno personalizado implementado por la clase (que para la mayoría de los tipos incorporados realiza una conversión a cadena) - o si no se proporciona ninguno, el object clase base regresa tipo de información.


La verificación as string es que el objeto es una cadena. Si no es un nulo, regresó.

La llamada a ToString() llamará al método ToString() en el objeto.


Para confundir aún más el asunto, C # 6.0 ha introducido el operador condicional nulo . Entonces ahora esto también se puede escribir como:

Page.Theme = Session["SessionTheme"]?.ToString();

Que devolverá nulo o el resultado de ToString () sin lanzar una excepción.


Si Session["SessionTheme"] no es una string , as string devolverá null .

.ToString() intentará convertir cualquier otro tipo a cadena llamando al método ToString() del objeto. Para la mayoría de los tipos incorporados, esto devolverá el objeto convertido a una cadena, pero para los tipos personalizados sin un .ToString() específico .ToString() , devolverá el nombre del tipo del objeto.

object o1 = "somestring"; object o2 = 1; object o3 = new object(); object o4 = null; string s = o1 as string; // returns "somestring" string s = o1.ToString(); // returns "somestring" string s = o2 as string; // returns null string s = o2.ToString(); // returns "1" string s = o3 as string; // returns null string s = o3.ToString(); // returns "System.Object" string s = o4 as string; // returns null string s = o4.ToString(); // throws NullReferenceException

Otra cosa importante a tener en cuenta es que si el objeto es null , al llamar a .ToString() arrojará una excepción, pero as string simplemente devolverá null .


Page.Theme = Session["SessionTheme"] as string;

intenta lanzar a una cuerda

mientras

Page.Theme = Session["SessionTheme"].ToString;

llama al método tostring, que puede ser cualquier cosa en realidad. Este método no se emite, debe devolver una representación de cadena de este objeto.