Rumah > pembangunan bahagian belakang > C++ > Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan Terus ke `var` dalam C#?

Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan Terus ke `var` dalam C#?

Linda Hamilton
Lepaskan: 2024-12-31 01:19:10
asal
255 orang telah melayarinya

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan kepada var

Dalam kod yang disediakan, penetapan kaedah tanpa nama kepada pembolehubah var gagal untuk disusun disebabkan oleh kekaburan dalam membuat kesimpulan jenis perwakilan.

Kaedah tanpa nama boleh diberikan untuk mewakilkan jenis, seperti Func atau Tindakan. Walau bagaimanapun, apabila menetapkan kepada var, pengkompil tidak boleh menentukan jenis perwakilan yang hendak digunakan. Ini kerana terdapat banyak kemungkinan jenis perwakilan, dan untuk lambda khususnya, tidak jelas sama ada niatnya adalah untuk menggunakan borang perwakilan atau bentuk pokok ungkapan.

Selain itu, walaupun pengkompil boleh membuat kesimpulan jenis perwakilan, ini boleh menyebabkan ketidakkonsistenan. Sebagai contoh, dengan mengandaikan tugasan var berjaya disusun, kod berikut tidak akan masuk akal lagi:

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};
Salin selepas log masuk

Ini kerana Func<> hanya membenarkan sehingga empat argumen dalam .NET 3.5, jadi inferens jenis tidak sepadan dengan gelagat sebenar.

Untuk menyelesaikan kekaburan ini, adalah perlu untuk menyatakan secara eksplisit jenis perwakilan apabila menetapkan kaedah tanpa nama kepada pembolehubah. Ini memastikan kejelasan dan ketekalan dalam kod.

Atas ialah kandungan terperinci Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan Terus ke `var` dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan