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
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
- 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 - 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 özellikleConsole.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
konsol.writeline ve Sistem.dışarı.sert...
Neden't Konsol değil.Writeline Ve...
Aşırı Sayıda Bağımsız değişken üzerind...
Nasıl baskı eclipse üzerinde bir değiş...
Tarayıcı kapsamı değişken $erişmeye�...