Saya sering mengalami kesalahan seperti "tidak dapat mengkonversi dari 'grup metode' ke 'string'" dalam kasus-kasus seperti:
var list = new List<string>();
// ... snip
list.Add(someObject.ToString);
tentu saja ada kesalahan ketik pada baris terakhir karena saya lupa tanda kurung sesudahnya ToString
. Bentuk yang benar adalah:
var list = new List<string>();
// ... snip
list.Add(someObject.ToString()); // <- notice the parentheses
Namun saya jadi bertanya-tanya apa itu grup metode. Google tidak banyak membantu atau MSDN .
c#
.net
method-group
Andrei Rînea
sumber
sumber
var list = new List<Func<string>>();
, maka grup metode akan dapat digunakan, danlist.Add(someObject.ToString);
akan berhasil.Jawaban:
Sebuah kelompok metode adalah nama untuk set metode (yang mungkin hanya satu) - yaitu dalam teori
ToString
metode mungkin memiliki beberapa overloads (ditambah metode ekstensi):ToString()
,ToString(string format)
, dll - makaToString
dengan sendirinya adalah sebuah "kelompok metode".Itu biasanya dapat mengonversi grup metode ke delegasi (diketik) dengan menggunakan resolusi overload - tetapi tidak ke string dll; itu tidak masuk akal.
Setelah Anda menambahkan tanda kurung, lagi; resolusi kelebihan menendang masuk dan Anda telah jelas mengidentifikasi panggilan metode.
sumber
Juga, jika Anda menggunakan LINQ, Anda tampaknya dapat melakukan sesuatu seperti
myList.Select(methodGroup)
.Jadi, misalnya, saya punya:
Alih-alih secara eksplisit menyatakan variabel yang akan digunakan seperti ini:
Saya bisa menghilangkan nama var:
sumber
return flag == true ? true : false
(facepalm).Anda dapat membuat grup metode ke delegasi.
Tandatangan delegasi memilih 1 metode dari grup.
Contoh ini mengambil
ToString()
kelebihan yang mengambil parameter string:Contoh ini mengambil
ToString()
kelebihan yang tidak memerlukan parameter:sumber
Hasil pertama dalam pencarian MSDN Anda mengatakan:
Pemahaman saya adalah bahwa pada dasarnya karena ketika Anda baru saja menulis
someInteger.ToString
, itu mungkin merujuk pada:atau bisa juga merujuk ke:
sehingga disebut kelompok metode.
sumber
The
ToString
fungsi memiliki banyak overloads - kelompok metode akan menjadi kelompok yang terdiri dari semua overloads yang berbeda untuk fungsi yang.sumber