Rumah >pembangunan bahagian belakang >C++ >Mengapa Pembolehubah Ditaip Secara Tersirat ('var') Tidak Boleh Memegang Kaedah Tanpa Nama Tanpa Pengisytiharan Jenis Eksplisit?
Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan kepada Pembolehubah Disimpulkan kepada Jenis Tersirat 'Var'?
Pertimbangkan kod berikut:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
Kod ini berjaya dikompil kerana jenis yang disimpulkan bagi ungkapan lambda ialah Perwakilan fungsi. Walau bagaimanapun, kod berikut tidak menyusun:
var comparer = delegate(string value) { return value != "0"; };
Pengkompil tidak boleh membuat kesimpulan jenis perwakilan untuk ungkapan lambda dalam kes ini. Ini kerana terdapat banyak kemungkinan jenis perwakilan yang boleh disimpulkan dan pengkompil tidak mempunyai konteks yang mencukupi untuk menentukan yang mana satu yang dimaksudkan.
Sebagai contoh, ungkapan lambda mungkin daripada jenis Func
Untuk menyelesaikan isu ini, nyatakan jenis perwakilan secara eksplisit lambda ungkapan:
var comparer = (Func<string, bool>)delegate(string value) { return value != "0"; };
Dengan perubahan ini, kod akan berjaya disusun dan jenis yang disimpulkan bagi ungkapan lambda ialah Func
Atas ialah kandungan terperinci Mengapa Pembolehubah Ditaip Secara Tersirat ('var') Tidak Boleh Memegang Kaedah Tanpa Nama Tanpa Pengisytiharan Jenis Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!