Rumah >pembangunan bahagian belakang >C++ >Mengapa `var` Tidak Boleh Digunakan untuk Mengisytiharkan Kaedah Tanpa Nama dalam C#?

Mengapa `var` Tidak Boleh Digunakan untuk Mengisytiharkan Kaedah Tanpa Nama dalam C#?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 10:25:16858semak imbas

Why Can't `var` Be Used to Declare Anonymous Methods in C#?

Mengapa Kaedah Tanpa Nama Tidak Boleh Ditugaskan ke var?

Dalam C#, kaedah tanpa nama, juga dikenali sebagai ungkapan lambda, memberikan ringkasan dan cara yang fleksibel untuk menentukan fungsi sebaris. Walau bagaimanapun, tidak seperti jenis perwakilan yang dinamakan, kaedah tanpa nama tidak boleh diberikan terus kepada pembolehubah yang ditaip secara tersirat sebagai var. Pengkompil menimbulkan ralat yang menyatakan bahawa kaedah tanpa nama tidak boleh diberikan kepada pembolehubah tempatan yang ditaip secara tersirat.

Sebab asas untuk sekatan ini ialah kekaburan yang timbul disebabkan oleh proses inferens jenis. Apabila menggunakan var, pengkompil menentukan jenis pembolehubah berdasarkan ungkapan yang diberikan. Walau bagaimanapun, untuk kaedah tanpa nama, terdapat bilangan jenis perwakilan yang tidak terhingga yang boleh diwakili oleh mereka. Ini akan membawa kepada tingkah laku yang tidak konsisten dan kemungkinan ralat, kerana pengkompil perlu meneka jenis perwakilan yang dimaksudkan.

Selain itu, ungkapan lambda juga boleh digunakan untuk mencipta pepohon ekspresi, yang tidak diwakili sebagai jenis perwakilan. Jika var dibenarkan untuk kaedah tanpa nama, ia akan mewujudkan situasi yang mengelirukan di mana tidak jelas sama ada lambda yang ditetapkan ialah perwakilan atau pokok ekspresi.

Oleh itu, untuk mengekalkan konsistensi dan mengelakkan kesamaran, bahasa C# memerlukan kaedah tanpa nama untuk ditugaskan secara eksplisit kepada jenis perwakilan sebelum ia boleh diberikan kepada pembolehubah var. Ini membolehkan pengkompil untuk mengesahkan jenis perwakilan dan memastikan bahawa ungkapan yang diberikan sepadan dengan tandatangan jenis yang dijangkakan.

Atas ialah kandungan terperinci Mengapa `var` Tidak Boleh Digunakan untuk Mengisytiharkan Kaedah Tanpa Nama 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