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
Linda Hamiltonasal
2024-12-31 01:19:10240semak imbas

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;
};

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!

Kenyataan:
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