SORU
7 Mart 2014, Cuma


Konsol.() WriteLine ve çok değişken aşırı gerek?

Belgeleri ile tarama ve Console.WriteLine() yöntem birkaç aşırı olduğunu fark ettim. Özellikle, merak ve kısmi karışıklık bu benim için geçerlidir:

public static void WriteLine(string format, params object[] arg);
public static void WriteLine(string format, object arg0);
public static void WriteLine(string format, object arg0, object arg1);
public static void WriteLine(string format, object arg0, object arg1, object arg2);
public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3);

Gereksiz gibi görünüyor. Birincisi, üst üste diğer dört aşırı ihtiyacı nedir? İlk yöntem diğer yöntemlerden yapabileceği her şeyi yapmak mümkün. Orada bir performans için dört bağımsız değişken (son) kolu olan ek aşırı, sağlayarak mücadele etmeye çalışıyorlardı endişe ediliyor? Dört bağımsız değişken bir dizi geçiyor yükü bu aşırı ihtiyacını sağlamak için yeterince büyük?

CEVAP
7 Mart 2014, Cuma


Genel olarak ilk aşırı diğer aşırı için yeterli olabilir haklısınız. Bu yöntem, grup bağlama gibi params anahtar dolaylı durumlar için kullanılan olamaz çünkü olsa da kesin olarak doğru değildir. Örneğin

delegate void E(string format, object o1);
E e = Console.WriteLine;

params aşırı bu durum tatmin etmez, sadece bu özellikle aşırı olduğunda işe yarayacak

public static void WriteLine(string format, object arg0);

Buna rağmen anlaşılması oldukça güç bir durum. Daha önemli sebepleri şunlardır

  1. Her CLİ dil params anahtar kelime desteklemek için gereklidir. Aşırı olan El WriteLine basit bir arama için bir dizi oluşturmak için ihtiyaç kaldırarak bu dilleri üzerindeki yükü azaltır
  2. Performans. params aşırı çağırmadan örtülü olarak derleyici tarafından yapılsa bile, bir dizi tahsis etmek için arayan zorlar. Ayırma ucuz .Net ama serbest değil. Küçük şeyleri bu kadar hızlı bir şekilde özellikle Console.WriteLine gibi yaygın olarak adlandırılan yöntemleri gibi ekleyin. Diğer aşırı olması sık görülen davalar için bu ayırma önler

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C#

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • Thom Hall

    Thom Hall

    24 Kasım 2006