Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kesalahan dan peringatan terkait metode ekstensi yang dinyatakan dengan parameter
-
CS1100: Metode memiliki pengubah parameter '
this
' yang bukan pada parameter pertama -
CS1101: Pengubah parameter '
ref
' tidak dapat digunakan dengan 'this
'. -
CS1102: Pengubah parameter '
out
' tidak dapat digunakan dengan 'this
'. - CS1103: Parameter pertama metode ekstensi tidak boleh dari jenis penunjuk.
- CS1105: Metode ekstensi harus statis.
- CS1106: Metode ekstensi harus didefinisikan dalam kelas statis non generik.
- CS1109: Metode Ekstensi harus ditentukan pada kelas statis tingkat atas, 'nama' adalah kelas berlapis.
- CS1110: Tidak dapat menentukan ekstensi baru karena tipe ExtensionAttribute kompilator yang diperlukan tidak dapat ditemukan. Apakah Anda kehilangan referensi ke System.Core.dll?
-
CS1112: Jangan gunakan 'ExtensionAttribute'. Gunakan kata kunci '
this
' sebagai gantinya. - CS1113: Metode ekstensi yang ditentukan pada jenis nilai tidak dapat digunakan untuk membuat delegasi.
- CS1743: Tidak dapat menentukan nilai default untuk parameter 'ini'.
- CS9281: Deklarasi ekstensi mungkin tidak memiliki nama.
- CS9282: Deklarasi ekstensi hanya dapat mencakup metode atau properti.
- CS9283: Ekstensi harus dideklarasikan dalam kelas statis tingkat atas, non-generik.
- CS9284: Parameter penerima ekstensi tidak dapat memiliki nilai default.
- CS9285: Kontainer ekstensi hanya dapat memiliki satu parameter penerima.
- CS9287: Parameter penerima tidak dapat memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9288: Parameter, variabel lokal, atau fungsi lokal tidak dapat memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9289: Parameter jenis anggota memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9290: Parameter, variabel lokal, atau fungsi lokal tidak dapat memiliki nama yang sama dengan parameter ekstensi.
-
CS9291: '
value
': nama parameter yang dihasilkan secara otomatis berkonflik dengan nama parameter ekstensi. - CS9292: Parameter jenis memiliki nama yang sama dengan parameter ekstensi.
- CS9293: Tidak dapat menggunakan parameter ekstensi dalam konteks ini.
-
CS9294: '
value
': nama parameter yang dihasilkan secara otomatis berkonflik dengan nama parameter jenis ekstensi. - CS9295: Jenis yang diperluas harus mereferensikan semua parameter jenis yang dideklarasikan oleh ekstensi, tetapi parameter jenis tidak direferensikan.
-
CS9300: Parameter penerima '
ref
' dari blok ekstensi harus merupakan jenis nilai atau jenis generik yang dibatasi untuk struct. -
CS9301: Parameter ekstensi penerima '
in
' atau 'ref readonly
' harus berupa jenis nilai beton (non-generik). - CS9302: anggota baru yang dilindungi dideklarasikan dalam blok ekstensi.
- CS9303: Tidak dapat mendeklarasikan anggota instans dalam blok ekstensi dengan parameter penerima yang tidak disebutkan namanya.
- CS9304: Tidak dapat mendeklarasikan aksesor khusus init dalam blok ekstensi.
- CS9305: Tidak dapat menggunakan pengubah pada parameter penerima blok ekstensi yang tidak disebutkan namanya.
Kesalahan umum pada deklarasi ekstensi
Kompilator memancarkan kesalahan ini ketika Anda melanggar aturan yang berlaku untuk semua deklarasi anggota ekstensi, terlepas dari sintaks yang dipilih:
-
CS1102: Pengubah parameter '
out
' tidak dapat digunakan dengan 'this
'. - CS1106: Metode ekstensi harus didefinisikan dalam kelas statis non generik.
- CS1103: Parameter pertama metode ekstensi tidak boleh dari jenis penunjuk.
- CS1109: Metode Ekstensi harus ditentukan pada kelas statis tingkat atas, 'nama' adalah kelas berlapis.
- CS1113: Metode ekstensi yang ditentukan pada jenis nilai tidak dapat digunakan untuk membuat delegasi.
- CS1743: Tidak dapat menentukan nilai default untuk parameter 'ini'.
- CS9283: Ekstensi harus dideklarasikan dalam kelas statis tingkat atas, non-generik.
- CS9284: Parameter penerima ekstensi tidak dapat memiliki nilai default.
- CS9285: Kontainer ekstensi hanya dapat memiliki satu parameter penerima.
Deklarasi ekstensi apa pun harus mengikuti aturan ini:
- Jenis penyertanya (
class
ataustruct
) harus bersifat bukan umum danstatic
. - Jenis yang berisi harus merupakan jenis tingkat atas. Ini tidak bisa dimasukkan ke dalam jenis lain.
- Anggota yang memperluas instans jenis nilai tidak dapat dikonversi ke delegasi.
- Parameter penerima tidak dapat menyertakan pengubah
out
parameter. - Parameter penerima tidak dapat memiliki nilai argumen default.
- Jenis penunjuk tidak dapat diperluas. Dengan kata lain, parameter yang Anda terapkan pengubah
this
tidak dapat menjadi jenis penunjuk.
Kesalahan yang terkait dengan deklarasi blok ekstensi
Kesalahan ini khusus untuk blok ekstensi, fitur C# 14. Blok ekstensi dinyatakan menggunakan extension
kata kunci di kelas statis.
extension
mendeklarasikan jenis dan nama penerima. Semua anggota di dalam blok yang dideklarasikan dengan extension
adalah anggota ekstensi untuk penerima tersebut:
- CS9281: Deklarasi ekstensi mungkin tidak memiliki nama.
- CS9282: Deklarasi ekstensi hanya dapat mencakup metode atau properti.
- CS9287: Parameter penerima tidak dapat memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9288: Parameter, variabel lokal, atau fungsi lokal tidak dapat memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9289: Parameter jenis anggota memiliki nama yang sama dengan parameter jenis kontainer ekstensi.
- CS9290: Parameter, variabel lokal, atau fungsi lokal tidak dapat memiliki nama yang sama dengan parameter ekstensi.
-
CS9291: '
value
': nama parameter yang dihasilkan secara otomatis berkonflik dengan nama parameter ekstensi. - CS9292: Parameter jenis memiliki nama yang sama dengan parameter ekstensi.
- CS9293: Tidak dapat menggunakan parameter ekstensi dalam konteks ini.
-
CS9294: '
value
': nama parameter yang dihasilkan secara otomatis berkonflik dengan nama parameter jenis ekstensi. - CS9295: Jenis yang diperluas harus mereferensikan semua parameter jenis yang dideklarasikan oleh ekstensi, tetapi parameter jenis tidak direferensikan.
-
CS9300: Parameter penerima '
ref
' dari blok ekstensi harus merupakan tipe nilai atau tipe generik yang dibatasi pada struct. -
CS9301: Parameter ekstensi penerima '
in
' atau 'ref readonly
' harus berupa jenis nilai beton (non-generik). - CS9302: anggota baru yang dilindungi dideklarasikan dalam blok ekstensi.
- CS9303: Tidak dapat mendeklarasikan anggota instans dalam blok ekstensi dengan parameter penerima yang tidak disebutkan namanya.
- CS9304: Tidak dapat mendeklarasikan aksesor khusus init dalam blok ekstensi.
- CS9305: Tidak dapat menggunakan pengubah pada parameter penerima blok ekstensi yang tidak disebutkan namanya.
Deklarasi ekstensi harus mengikuti aturan ini:
- Ekstensi tidak dapat menyertakan token nama. Ekstensi mendeklarasikan penerima saja.
- Parameter penerima tidak dapat memiliki nilai default.
Anggota ekstensi yang dinyatakan dalam blok ekstensi harus mengikuti aturan ini, selain aturan umum:
- Hanya metode dan properti yang merupakan jenis anggota ekstensi yang valid. Anggota ekstensi dapat memperpanjang fungsi instans atau tipe.
- Ekstensi harus memberikan nama parameter untuk penerima agar dapat menyertakan anggota yang memperluas suatu instans.
- Nama parameter penerima harus unik di blok ekstensi tersebut.
- Semua anggota ekstensi harus menggunakan semua parameter jenis yang dideklarasikan pada ekstensi. Mereka dapat menambahkan lebih banyak parameter jenis.
Kesalahan yang terkait dengan this
metode ekstensi parameter
Kesalahan ini khusus untuk metode ekstensi tempat Anda mendeklarasikan penerima dengan menambahkan this
pengubah ke parameter pertama metode:
-
CS1100: Metode memiliki pengubah parameter '
this
' yang bukan pada parameter pertama -
CS1101: Pengubah parameter '
ref
' tidak dapat digunakan dengan 'this
'. - CS1105: Metode ekstensi harus statis.
- CS1110: Tidak dapat menentukan ekstensi baru karena tipe ExtensionAttribute kompilator yang diperlukan tidak dapat ditemukan. Apakah Anda kehilangan referensi ke System.Core.dll?
-
CS1112: Jangan gunakan 'ExtensionAttribute'. Gunakan kata kunci '
this
' sebagai gantinya.
Metode ekstensi di mana instans penerima menyertakan pengubah this
harus mengikuti aturan ini, selain aturan umum:
- Metode harus memiliki pengubah
static
. - Pengubah
this
parameter harus diterapkan ke parameter pertama. Ini tidak dapat diterapkan ke parameter lain pada metode . - Pengubah
ref
out
parameter tidak dapat diterapkan ke parameter pertama. Untuk menerapkanref
, Anda perlu mengonversi ke blok ekstensi. - Di aplikasi .NET Framework,
System.Core.dll
harus ditambahkan sebagai referensi. - Anda harus menentukan pengubah
this
pada parameter pertama. Anda tidak dapat langsung menggunakan atribut sebagai gantinya ExtensionAttribute .