Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo Object.ToString

Restituisce una stringa che rappresenta l'oggetto corrente.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)
public virtual string ToString()

Valore restituito

Tipo: System.String
Stringa che rappresenta l'oggetto corrente.

ToString è il principale metodo di formattazione in .NET Framework. Converte un oggetto nella rappresentazione in formato stringa in modo che sia adatto alla visualizzazione. Per ulteriori informazioni sul supporto per la formattazione in .NET Framework, vedere Formattazione dei tipi di dati.

L'implementazione predefinita del metodo ToString restituisce il nome completo del tipo di Object, come indicato nell'esempio seguente.


using System;

public class Example
{
   public static void Main()
   {
      Object obj = new Object();
      Console.WriteLine(obj.ToString());
   }
}
// The example displays the following output:
//      System.Object


Poiché Object è la classe di base di tutti i tipi riferimento in .NET Framework, questo comportamento è ereditato da tipi riferimento che non eseguono l'override del metodo ToString. Questa condizione è illustrata nell'esempio che segue. Definisce una classe denominata Object1 che accetta l'implementazione predefinita di tutti i membri Object. Il relativo metodo ToString restituisce il nome del tipo completo dell'oggetto.


using System;
using Examples;

namespace Examples
{
   public class Object1
   {
   }
}

public class Example
{
   public static void Main()
   {
      object obj1 = new Object1();
      Console.WriteLine(obj1.ToString());
   }
}
// The example displays the following output:
//   Examples.Object1


I tipi spesso eseguono l'override del metodo ToString per restituire una stringa che rappresenta un'istanza dell'oggetto. I tipi di base, come ad esempio Char, Int32 e String offrono ToString implementazioni che restituiscono il formato stringa del valore che l'oggetto rappresenta. Nell'esempio seguente viene definita la classe Object2 che esegue l'override del metodo ToString per restituire il nome del tipo e il valore.


using System;

public class Object2
{
   private object value;

   public Object2(object value)
   {
      this.value = value;
   }

   public override string ToString()
   {
      return base.ToString() + ": " + value.ToString();
   }
}

public class Example
{
   public static void Main()
   {
      Object2 obj2 = new Object2('a');
      Console.WriteLine(obj2.ToString());
   }
}
// The example displays the following output:
//       Object2: a


Note per Windows Runtime

Quando si chiama il metodo ToString in una classe di Windows Runtime, fornisce il comportamento predefinito per le classi che non superano ToString. Ciò fa parte del supporto fornito da .NET Framework per Windows Runtime (vedere Supporto .NET Framework per applicazioni Windows Store e Windows Runtime. In Windows Runtime le classi non ereditano Object e sempre non implementano ToString. Tuttavia, vengono sempre avere ToString, Equals(Object) e metodi GetHashCode quando vengono utilizzate nel codice c# o Visual Basic e .NET Framework fornisce un comportamento predefinito per tali metodi.

A partire da .NET Framework 4.5.1, Common Language Runtime utilizzerà IStringable.ToString in un oggetto Windows Runtime prima di eseguire il fallback all'implementazione predefinita Object.ToString.

NotaNota

le classiWindows Runtime scritte in c# o in Visual Basic possono eseguire l'override del metodo ToString.

7bxwbwt2.collapse_all(it-it,VS.110).gifWindows Runtime e l'interfaccia di IStringable

A partire da Windows 8.1, Windows Runtime include IStringable un'interfaccia del singolo metodo IStringable.ToString, fornisce il supporto di base di formattazione analogo a quello fornito da Object.ToString. Per evitare ambiguità, non è necessario implementare IStringable sui tipi gestiti.

Quando gli oggetti gestiti vengono chiamati da codice nativo o dal codice scritto in linguaggi quali JavaScript o C++/CX, sembrano implementare IStringable. Common Language Runtime definirà consente di indirizzare le IStringable.ToString chiamate a Object.ToString nel caso IStringable non viene implementato l'oggetto gestito.

Nota di avvisoAttenzione

Poiché i controlli a Common Language IStringable Runtime per tutti i tipi gestiti nelle applicazioni Windows Store, si consiglia di non fornire un'implementazione personalizzata. IStringable Implementare IStringable può derivare il comportamento imprevisto quando si chiama ToString da Windows Runtime, da C++/CX, o da JavaScript.

Se si decide di implementare IStringable in un tipo gestito pubblico che verrà esportato in un componente Windows Runtime, si applicano le limitazioni seguenti:

  • È possibile definire IStringable l'interfaccia solo in una classe implementa la relazione", ad esempio

    public class NewClass : IStringable
    

    in c#, o

    Public Class NewClass : Implements IStringable
    

    in Visual Basic.

  • Non è possibile implementare IStringable in un'interfaccia.

  • Non è possibile dichiarare un parametro di tipo IStringable.

  • IStringable non può essere il tipo restituito del metodo, proprietà, o di campo.

  • Non è possibile nascondere IStringable l'implementazione di classi di base utilizzando una definizione di metodo analogo al seguente:

    
    public class NewClass : IStringable
    {
       public new string ToString()
       {
          return "New ToString in NewClass";
       }
    }
    
    

    Invece, IStringable.ToString l'implementazione deve eseguire l'override sempre l'implementazione della classe base. È possibile nascondere l'implementazione ToString solo richiamandola su un'istanza della classe fortemente tipizzata.

Si noti che in diverse circostanze, chiamate da codice nativo a un tipo gestito che implementi IStringable o nascondere la ToString relativa implementazione possono produrre un comportamento imprevisto.

Note per gli eredi

Quando si implementano tipi propri, è necessario eseguire l'override del metodo ToString per restituire valori significativi per quei tipi. Le classi derivate che richiedono più controllo sulla formattazione rispetto a quanto offerto da ToString possono implementare l'interfaccia IFormattable. Il metodo IFormattable.ToString(String, IFormatProvider) consente di definire stringhe di formato che controllano la formattazione e di utilizzare un oggetto IFormatProvider che può fornire la formattazione specifica delle impostazioni cultura.

Un override del metodo ToString devono seguire queste linee guida:

  • La stringa restituita deve essere semplice da usare e letto da esseri umani.

  • La stringa restituita deve identificare in modo univoco il valore dell'istanza di un oggetto.

  • La stringa restituita deve essere il più breve possibile in modo che sia appropriata per la visualizzazione di un debugger.

  • L'override di ToString non restituiscono String.Empty o una stringa null.

  • L'override di ToString non devono generare un'eccezione.

  • Se la rappresentazione di stringa di un'istanza è dipendente dalle impostazioni cultura o può essere formattata in più modi, implementare l'interfaccia IFormattable.

  • Se la stringa restituita sono incluse informazioni riservate, è innanzitutto necessario esigere un'autorizzazione appropriata. In tale caso, è possibile restituire le informazioni riservate; in caso contrario, deve essere restituita una stringa che esclude le informazioni riservate.

  • L'override di ToString non dovrebbero avere effetti collaterali osservabili per evitare alcune complicazioni nel debug. Ad esempio, una chiamata al metodo ToString non può modificare il valore dei campi di istanza.

  • Se il tipo implementa un metodo di analisi (o Parse o metodo TryParse, un costruttore, o un altro metodo statico che crea un'istanza del tipo di una stringa), assicurarsi che la stringa restituita dal metodo ToString può essere convertita in un'istanza di oggetto.

.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.