Saya sedang menjelajahi dokumentasi dan melihat bahwa Console.WriteLine()
metode ini memiliki beberapa kelebihan beban. Khususnya, rasa ingin tahu dan sebagian kebingungan saya berkaitan dengan ini:
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);
Sepertinya berlebihan. Apa kebutuhan dari empat kelebihan beban lainnya di atas yang pertama? Metode pertama mampu melakukan segala sesuatu yang dapat dilakukan metode lain. Apakah ada masalah kinerja yang mereka coba atasi dengan memberikan kelebihan beban tambahan, yang menangani hingga empat argumen (yang terakhir)? Apakah overhead melalui larik hingga empat argumen cukup besar untuk memenuhi kebutuhan kelebihan beban ini?
new E(Console.WriteLine)
dalam C # 1.Kelebihan beban adalah untuk kenyamanan program C ++ / CLI di mana kata kunci params tidak ada.
sumber
Saya pikir kalian semua lupa bahwa params diperkenalkan di C # 2.0. Oleh karena itu, kelebihan juga ada dari .NET 1.1, jika kata kunci params tidak.
sumber
Menurut saya pertanyaan yang diajukan sudah mendapat jawaban yang baik dan jelas dari JaredPar dan jaket tapi ada satu hal yang menurut saya bisa relevan juga,
Menurut saya kemudahan penggunaan dan kebebasan bagi pengguna untuk menggunakan salah satu fungsi di atas sesuai dengan kebutuhan yang ada, dengan demikian, kebutuhan jauh lebih nyaman daripada memaksakan mereka untuk membuat array, ketika mereka benar-benar tidak membutuhkannya.
Saya juga berpikir tentang masa lalu ketika saya mulai mempelajari C # Saya hampir tidak menggunakan array dan menggunakan array adalah tugas yang rumit bagi saya, untuk menetapkannya dan kemudian menginisialisasi mereka dengan nilai yang tepat benar-benar rumit dan memakan waktu juga ...
sumber
params
adalah agar Anda bisa meneruskan array, atau secara eksplisit menulis semua argumen. metode sepertivoid do(params object[])
bisa disebut dengando(new object[] {"some", "stuff"}
ataudo("some", "stuff")
. Saya tidak berpikir maksud Anda benar-benar berlaku di sini.params
dan mereka tahu jikaparams
ada, maka Anda dapat meneruskan variabel sebagai dipisahkan koma.params
bisa seperti ini untuk waktu yang lama dan di bagian bantuan ditampilkan di Visual Studion jika saya mendapatkanarray []
sebagai argumen saya akan berpikir sama untuk menyediakan array sebagai argumen ....Ini tidak benar-benar untuk masalah kinerja seperti itu. Namun, meningkatkan kegunaan adalah alasan yang sah di baliknya.
Kode di bawah ini, akan memberi Anda sedikit wawasan.
public class TipCalculator { private const double tipRate = 0.18; public static int Main(string[] args) { double billTotal; if (args.Length == 0) { Console.WriteLine("usage: TIPCALC total"); return 1; } else { try { billTotal = Double.Parse(args[0]); } catch(FormatException) { Console.WriteLine("usage: TIPCALC total"); return 1; } double tip = billTotal * tipRate; Console.WriteLine(); Console.WriteLine("Bill total:\t{0,8:c}", billTotal); Console.WriteLine("Tip total/rate:\t{0,8:c} ({1:p1})", tip, tipRate); Console.WriteLine(("").PadRight(24, '-')); Console.WriteLine("Grand total:\t{0,8:c}", billTotal + tip); return 0; } } }
Silakan merujuk ke tautan: http://msdn.microsoft.com/en-us/library/aa324774(v=vs.71).aspx untuk informasi lebih lanjut.
sumber