Bu makale, makine tarafından çevrilmiştir. Makaleyi İngilizce dilinde görüntülemek için İngilizce onay kutusunu işaretleyin. Ayrıca, fare işaretçisiyle İngilizce metnin üzerine gelerek metni açılır pencerede de görüntüleyebilirsiniz.
Çeviri
İngilizce

Object.ToString Yöntemi ()

 

Yayımlanan: Ağustos 2016

Geçerli nesneyi temsil eden bir dize döndürür.

Ad alanı:   System
Derleme:  mscorlib (mscorlib.dll içinde)

public virtual string ToString()

Dönüş Değeri

Type: System.String

Geçerli nesneyi temsil eden bir dize.

Object.ToString Ana yöntemi .NET Framework'teki biçimlendirme. Böylece görüntülemek için uygun bir nesneyi dize gösterimine dönüştürür. (.NET Framework desteği biçimlendirme hakkında daha fazla bilgi için bkz: .NET Framework'teki Biçimlendirme Türleri.) Varsayılan uygulamaları Object.ToString yöntemi nesnenin türünün tam adını döndürür.

System_CAPS_importantÖnemli

Başka bir tür üye listesinden bağlantıyı izleyerek bu sayfayı ulaşmış olabilirsiniz. Bu tür geçersiz çünkü Object.ToString. Bunun yerine, işlevselliğini devralır Object.ToString yöntemi.

Türleri sık sık geçersiz kılma Object.ToString belirli bir tür daha uygun bir dize gösterimini sağlamak için yöntemi. Türleri de sık aşırı Object.ToString Biçim dizeleri veya kültüre duyarlı biçimlendirme desteği sağlamak için yöntemi.

Bu bölümde:

Varsayılan Object.ToString() yöntemi
Object.ToString() yöntemini geçersiz kılma
ToString yöntemi aşırı yüklemesi
Genişletme Object.ToString yöntemi
Windows çalışma zamanı için Notlar

Varsayılan uygulamasını ToString yöntemi türünü tam olarak nitelenmiş adını döndürür Object, aşağıdaki örnekte gösterildiği gibi.

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

Çünkü Object tüm başvuru türlerinin taban sınıf, .NET Framework, bu davranışı geçersiz başvuru türleri tarafından devralınır ToString yöntemi. Aşağıdaki örnek bunu göstermektedir. Adlı bir sınıf tanımlar Object1 tüm varsayılan uygulamasını kabul eden Object üyeleri. Kendi ToString yöntemi nesnenin tam olarak nitelenmiş tür adını döndürür.

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

Türleri yaygın olarak geçersiz kılma Object.ToString nesne örneği temsil eden bir dize döndürmek için yöntemi. Örneğin, temel gibi türleri Char, Int32, ve String sağlamak ToString uygulamaları nesnesini temsil eden değerinin dize biçiminde döndürür. Aşağıdaki örnek bir sınıf tanımlar Object2, geçersiz kılmalar ToString tür adı yanı sıra değerini döndürmek için yöntemi.

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

Aşağıdaki tablo .NET Framework türü kategorilerini listeler ve bunlar geçersiz kılar olup olmadığını gösteren Object.ToString yöntemi.

Tür kategorisi

Object.ToString() geçersiz kılar

Davranışı

class

yok

yok

Yapı

Evet (ValueType.ToString)

Object.ToString() aynı

Sabit Listesi

Evet (Enum.ToString())

Üye adı

interface

Hayır

yok

delegate

Hayır

yok

Geçersiz kılma hakkında ek bilgi için Notlar bölümüne notlara bakın ToString.

Parametresiz geçersiz kılma yanı sıra Object.ToString() yöntemi, birçok tür aşırı ToString parametreleri kabul yöntemi sürümlerini sağlamak için yöntemi. En yaygın olarak, bu değişken biçimlendirmesi ve kültüre duyarlı biçimlendirme için destek sağlamak için yapılır.

Aşağıdaki örnek aşırı ToString çeşitli alanlarını değerini içeren bir sonuç dizesi döndürülecek yöntemi bir Automobile sınıfı. Dört biçim dizeleri tanımlar: G, model adı ve yıl; döndürür D, model adı, yılın ve kapı sayısı döndürür; C, model adı, yılın ve silindir sayısını döndürür; ve A, tüm dört alan değerlerini içeren bir dize döndürür.

using System;

public class Automobile
{
   private int _doors;
   private String _cylinders;
   private int _year;
   private String _model;

   public Automobile(String model, int year , int doors,
                     String cylinders)
   {
      _model = model;
      _year = year;
      _doors = doors;
      _cylinders = cylinders;
   }

   public int Doors
   { get { return _doors; } }

   public String Model
   { get { return _model; } }

   public int Year
   { get { return _year; } }

   public String Cylinders
   { get { return _cylinders; } }

   public override String ToString()
   {
      return ToString("G");
   }

   public String ToString(String fmt)
   {
      if (String.IsNullOrEmpty(fmt))
         fmt = "G";

      switch (fmt.ToUpperInvariant())
      {
         case "G":
            return String.Format("{0} {1}", _year, _model);
         case "D":
            return String.Format("{0} {1}, {2} dr.",
                                 _year, _model, _doors);
         case "C":
            return String.Format("{0} {1}, {2}",
                                 _year, _model, _cylinders);
         case "A":
            return String.Format("{0} {1}, {2} dr. {3}",
                                 _year, _model, _doors, _cylinders);
         default:
            String msg = String.Format("'{0}' is an invalid format string",
                                       fmt);
            throw new ArgumentException(msg);
      }
   }
}

public class Example
{
   public static void Main()
   {
      var auto = new Automobile("Lynx", 2016, 4, "V8");
      Console.WriteLine(auto.ToString());
      Console.WriteLine(auto.ToString("A"));
   }
}
// The example displays the following output:
//       2016 Lynx
//       2016 Lynx, 4 dr. V8

Aşağıdaki örnek, aşırı yüklenmiş çağırır Decimal.ToString(String, IFormatProvider) kültüre duyarlı biçimlendirme para birimi değerini görüntülemek için yöntemi.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      String[] cultureNames = { "en-US", "en-GB", "fr-FR",
                                "hr-HR", "ja-JP" };
      Decimal value = 1603.49m;
      foreach (var cultureName in cultureNames) {
         CultureInfo culture = new CultureInfo(cultureName);
         Console.WriteLine("{0}: {1}", culture.Name,
                           value.ToString("C2", culture));
      }
   }
}
// The example displays the following output:
//       en-US: $1,603.49
//       en-GB: £1,603.49
//       fr-FR: 1 603,49 €
//       hr-HR: 1.603,49 kn
//       ja-JP: ¥1,603.49

Biçim dizeleri ve kültüre duyarlı biçimlendirme hakkında daha fazla bilgi için bkz: .NET Framework'teki Biçimlendirme Türleri. Sayısal değerler tarafından desteklenen biçim dizeleri için bkz: standart sayısal biçim dizeleri ve Özel sayısal biçim dizeleri. Tarih ve saat değerlerini tarafından desteklenen biçim dizeleri için bkz: standart tarih ve saat biçim dizeleri ve özel tarih ve saat biçim dizeleri.

Varsayılan bir tür devraldığı için Object.ToString yöntemi, davranışını istenmeyen Bul ve olabilirsiniz değiştirmek istiyor. Diziler ve koleksiyon sınıfları bu özellikle doğrudur. Beklenenden ederken ToString yöntemi üyelerinin değerlerini görüntülemek için bir dizi veya koleksiyon sınıfı, bunun yerine tür tam olarak nitelenmiş tür adı aşağıdaki örnekte gösterildiği gibi gösterir.

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int[] values = { 1, 2, 4, 8, 16, 32, 64, 128 };
      Console.WriteLine(values.ToString());

      List<int> list = new List<int>(values);
      Console.WriteLine(list.ToString());
   }
}
// The example displays the following output:
//       System.Int32[]
//       System.Collections.Generic.List`1[System.Int32]

İstediğiniz sonuç dizesi üretmek için birkaç seçeneğiniz vardır.

  • Tür bir dizi, bir koleksiyon nesnesi veya uygulayan bir nesne ise IEnumerable veya IEnumerable<T> arabirimlerini kullanarak öğeleri sıralayabilirsiniz foreach C# deyimi veya For Each...Next Visual Basic'te oluşturmak.

  • Sınıf değilse sealed (C# ' de) veya NotInheritable (Visual Basic'te) ayarlanmış taban sınıfından devralan bir sarmalayıcı sınıfı geliştirebilirsiniz Object.ToString özelleştirmek istediğiniz yöntemi. En azından şunları yapmanız gerekir:

    1. Gerekli tüm oluşturucuları uygulayın. Türetilmiş sınıfların kendi temel sınıf oluşturucuları devralmaz.

    2. Geçersiz kılma Object.ToString istediğiniz sonuç dizesini döndürmek için yöntemi.

    Aşağıdaki örnek için bir sarmalayıcı sınıfı tanımlar List<T> sınıfı. Onu geçersiz kılar Object.ToString her yöntemi tam olarak nitelenmiş tür adı yerine koleksiyon değerini görüntülemek için yöntemi.

    using System;
    using System.Collections.Generic;
    
    public class CList<T> : List<T>
    {
       public CList(IEnumerable<T> collection) : base(collection)
       { }
    
       public CList() : base()
       {}
    
       public override String ToString()
       {
          String retVal = String.Empty;
          foreach (T item in this) {
             if (String.IsNullOrEmpty(retVal))
                retVal += item.ToString();
             else
                retVal += String.Format(", {0}", item);
          }
          return retVal;
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          var list2 = new CList<int>();
          list2.Add(1000);
          list2.Add(2000);
          Console.WriteLine(list2.ToString());
       }
    }
    // The example displays the following output:
    //    1000, 2000
    
  • Geliştirme bir genişletme yöntemi istediğiniz sonuç dizesini döndürür. Not varsayılan geçersiz kılınamaz Object.ToString Bu şekilde yöntemi (diğer bir deyişle, uzantı sınıfı (C# ' de) veya Modülü (Visual Basic'te) adlı bir parametresiz yöntemin olamaz ToString özgün tür yerine çağrılan ToString yöntemi. Bazı diğer adı, parametresiz sağlamak zorunda kalırsınız ToString değiştirme.

    Aşağıdaki örnek, iki genişleten yöntemler tanımlar List<T> sınıfı: Parametresiz bir ToString2 yöntemi ve bir ToString yöntemi ile bir String temsil eden bir biçim dizesi parametresi.

    using System;
    using System.Collections.Generic;
    
    public static class StringExtensions
    {
       public static String ToString2<T>(this List<T> l)
       {
          String retVal = String.Empty;
          foreach (T item in l)
             retVal += String.Format("{0}{1}", String.IsNullOrEmpty(retVal) ?
                                                         "" : ", ",
                                      item);
          return String.IsNullOrEmpty(retVal) ? "{}" : "{ " + retVal + " }";
       }
    
       public static String ToString<T>(this List<T> l, String fmt)
       {
          String retVal = String.Empty;
          foreach (T item in l) {
             IFormattable ifmt = item as IFormattable;
             if (ifmt != null)
                retVal += String.Format("{0}{1}",
                                        String.IsNullOrEmpty(retVal) ?
                                           "" : ", ", ifmt.ToString(fmt, null));
             else
                retVal += ToString2(l);
          }
          return String.IsNullOrEmpty(retVal) ? "{}" : "{ " + retVal + " }";
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          List<int> list = new List<int>();
          list.Add(1000);
          list.Add(2000);
          Console.WriteLine(list.ToString2());
          Console.WriteLine(list.ToString("N0"));
       }
    }
    // The example displays the following output:
    //       { 1000, 2000 }
    //       { 1,000, 2,000 }
    

Çağırdığınızda ToString bir sınıfta yöntemi Windows Çalışma Zamanı, varsayılan davranışı geçersiz kılmaz sınıflar için sağladığı ToString. Bu, .NET Framework için sağladığı desteğin bir parçasıdır Windows Çalışma Zamanı (bkz: Windows Mağazası Uygulamaları ve Windows Çalışma Zamanı için .NET Framework Desteği). Sınıfları Windows Çalışma Zamanı almazlar Object, ve her zaman uygulamayan bir ToString. Ancak, her zaman için göründükleri ToString, Equals(Object), ve GetHashCode yöntemleri, C# veya Visual Basic kodunuzda kullanın ve .NET Framework varsayılan davranışı için bu yöntemleri sağlar.

İle başlayarak .NET Framework 4.5.1, ortak dil çalışma zamanı kullanacağı IStringable.ToString üzerinde bir Windows Çalışma Zamanı nesne için varsayılan uygulamasını geri dönmeden önce Object.ToString.

System_CAPS_noteNot

Windows Çalışma Zamanı C# veya Visual Basic'te yazılmış sınıfları geçersiz kılma ToString yöntemi.

İle başlayarak Windows 8.1, Windows Çalışma Zamanı içeren bir IStringable tek bir yöntem arabirim IStringable.ToString, tarafından sağlanan için karşılaştırılabilir temel biçimlendirme desteği sağlar Object.ToString. Belirsizliği önlemek için değil uygulamalıdır IStringable yönetilen türler üzerinde.

Ne zaman yönetilen nesneleri çağrılır yerel kod veya JavaScript veya C + gibi dillerde yazılan kod tarafından +/ CX kapsamında, göründükleri uygulamak için IStringable. Ortak dil çalışma zamanı çağrıları otomatik olarak yönlendirmek IStringable.ToString için Object.ToString olay IStringable yönetilen nesne üzerinde uygulanmadı.

System_CAPS_warningUyarı

Ortak dil çalışma zamanı otomatik uygular çünkü IStringable tüm türleri yönetilen Windows Mağazası uygulamaları öneririz, kendi sağlamaz, IStringable uygulaması. Uygulama IStringable çağrılırken istenmeyen davranışa neden olabilir ToString öğesinden Windows Çalışma Zamanı, C + +/ CX veya JavaScript.

Uygulamak isterseniz IStringable dışa aktarılan ortak yönetilen türde bir Windows Çalışma Zamanı bileşeni, aşağıdaki kısıtlamalar geçerlidir:

  • Tanımlayabilirsiniz IStringable gibi yalnızca bir "uygulayan sınıf" ilişkisinde, arabirim

    public class NewClass : IStringable
    

    C# veya

    Public Class NewClass : Implements IStringable
    

    Visual Basic'te.

  • Uygulayamaz IStringable arabirim üzerinde.

  • Bir parametre türünde bildiremezsiniz IStringable.

  • IStringable yöntemi, özelliği veya alanı dönüş türü olamaz.

  • Gizleme olamaz, IStringable uygulamasını kullanarak aşağıdaki gibi bir yöntem tanımını temel sınıflardan:

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

    Bunun yerine, IStringable.ToString uygulama temel sınıf uygulamasına her zaman geçersiz gerekir. Saklayabilirsiniz bir ToString türü kesin belirlenmiş sınıf örneğinde çağırma tarafından yalnızca uygulama.

Yerel koddan uygulayan yönetilen bir türe çağırır, çeşitli koşullar altında Not IStringable veya gizler kendi ToString uygulaması beklenmeyen davranış üretebilir.

Devralanlara Notlar:

Kendi türlerinizi uyguladığınızda, geçersiz kılmalısınız ToString Bu türleri için anlamlı olan değer döndürmek için yöntemi. Türetilmiş daha biçimlendirme üzerinde daha fazla denetim gerektiren sınıfları ToString sağlar uygulayabilirsiniz IFormattable arabirimi. Kendi IFormattable.ToString(String, IFormatProvider) yöntemi sağlar formatlamayı kontrol eden biçim dizeleri tanımlamak ve kullanmak için bir IFormatProvider kültüre özgü biçimlendirme için sağlayan nesne.

Geçersiz kılmalar, ToString yöntemi aşağıdaki yönergeleri izleyin:

  • Döndürülen dize kolay ve insanlar tarafından okunabilir olması gerekir.

  • Döndürülen dize nesne örneği değeri benzersiz olarak tanımlamalıdır.

  • Böylece bir hata ayıklayıcı tarafından görüntülenecek uygun döndürülen dize olabildiğince kısa olmalıdır.

  • ToString Geçersiz kılma döndürmemelidir String.Empty veya boş bir dize.

  • ToString Geçersiz kılma bir özel durum oluşturmamalıdır.

  • Bir örneğin dize gösterimi kültüre duyarlı veya birden çok şekilde biçimlendirilmiş, uygulama IFormattable arabirimi.

  • Döndürülen dize hassas bilgiler içeriyorsa, önce uygun bir izin talep edilmemelidir. İsteğe bağlı başarılı olursa, hassas bilgileri döndürebilir; Aksi takdirde, hassas bilgileri dışlayan bir dize döndürmelidir.

  • ToString Geçersiz kılma hata ayıklama içinde zorluklar önlemek için observable hiçbir yan etkisi sahip olmalıdır. Örneğin, bir çağrı ToString yöntemi örneği alanların değerini değiştirme.

  • Türünüz ayrıştırma yöntemi uygularsa (veya Parse veya TryParse yöntemi, bir oluşturucu veya dize türünden bir örneğini bazı bir statik yöntem), tarafından döndürülen dize emin olun ToString yöntemi bir nesne örneği dönüştürülebilir.

Evrensel Windows Platformu
8 sonrasında kullanılabilir
.NET Framework
1.1 sonrasında kullanılabilir
Taşınabilir Sınıf Kitaplığı
Destekleyen: taşınabilir .NET platformları
Silverlight
2.0 sonrasında kullanılabilir
Windows Phone Silverlight
7.0 sonrasında kullanılabilir
Windows Phone
8.1 sonrasında kullanılabilir
Başa dön
Show: