Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C# Menjamin Perintah Deterministik untuk Permulaan Kelas Statik?

Bagaimanakah C# Menjamin Perintah Deterministik untuk Permulaan Kelas Statik?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 17:19:42708semak imbas

How Does C# Guarantee a Deterministic Order for Static Class Initialization?

Tertib Penentuan Permulaan Kelas Statik dalam C#

Turutan permulaan kelas statik dalam C# dijelaskan oleh spesifikasi ECMA. Tertib ini memastikan ketekalan dalam tingkah laku program.

Menurut ECMA-334:

  • Apabila pemula medan statik wujud, ia dilaksanakan serta-merta sebelum pembina statik yang sepadan.
  • Jika tiada pembina statik, pemula dilaksanakan pada masa yang bergantung kepada pelaksanaan sebelum menggunakan sebarang medan statik daripada kelas.
  • Pelaksanaan pembina statik tercetus apabila sama ada tika kelas dicipta atau mana-mana ahli statik dirujuk.
  • Dalam kelas dengan kaedah Utama, pembina statik dilaksanakan sebelum memasuki kaedah Utama.

Dalam kod yang diberikan sampel:

  1. Merujuk A.X dalam Utama mencetuskan permulaan A.X.
  2. A.X permulaan memerlukan B.X, jadi ia memulakan B.X permulaan.
  3. B.X diberikan nilai lalai sebanyak 7. Output: "B.X = 7."
  4. Statik B() dipanggil, mengeluarkan "B.X = 0."
  5. A.X dimulakan sebagai B.X 1, menghasilkan A.X = 1.
  6. Statik A() dipanggil, mengeluarkan "A.X = 1 ."
  7. Akhir sekali, cetakan Utama "A = 1, B = 0."

Standard tidak menggalakkan pemerhatian medan statik dengan pemula berubah dalam keadaan lalainya untuk mengekalkan konsistensi.

Atas ialah kandungan terperinci Bagaimanakah C# Menjamin Perintah Deterministik untuk Permulaan Kelas Statik?. 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