Rumah > Artikel > pembangunan bahagian belakang > Apakah kegunaan pembina statik dalam C#?
Pembina statik digunakan untuk memulakan sebarang data statik, atau melaksanakan operasi tertentu Kandungan yang perlu diterjemahkan ialah: Operasi yang dilakukan secara automatik sebelum panggilan pertama Apabila contoh dibuat atau mana-mana ahli statik dirujuk.
Pembina statik sangat berguna apabila membuat kelas pembalut untuk kod tidak terurus, Apabila pembina boleh memanggil kaedah LoadLibrary. Perkara yang sama berlaku untuk pembina statik Tempat yang sesuai untuk menguatkuasakan parameter jenis yang tidak boleh disemak pada masa jalan Kekangan disemak pada masa penyusunan.
Pembina statik mempunyai sifat berikut −
Pembina statik tidak menerima pengubah suai atau parameter akses.
Sesuatu kelas atau struktur hanya boleh mempunyai satu pembina statik.
Pembina statik tidak boleh diwarisi atau terlebih beban.
Pembina statik tidak boleh dipanggil terus, ia hanya boleh dipanggil melalui kaedah lain
Pengguna tidak mempunyai kawalan ke atas apabila pembina statik dilaksanakan program.
Pembina statik dipanggil secara automatik sebelum memulakan kelas Contoh pertama dibuat atau merujuk mana-mana ahli statik. statik Pembina akan dijalankan sebelum pembina contoh. jenis pembina statik Dipanggil apabila kaedah statik diberikan kepada acara atau perwakilan dan dipanggil Dan bukan apabila ditugaskan. Jika pemula pembolehubah medan statik wujud dalam kelas pembina statik, ia akan dilaksanakan dalam susunan teks dalam Kelas dengan pembina statik yang akan dilaksanakan dalam susunan teks Mereka muncul dalam pengisytiharan kelas sebelum pelaksanaan Jika anda tidak menyediakan pembina statik untuk memulakan medan statik, semua medan statik akan dimulakan secara automatik pada akses pertama dalam susunan di mana ia diisytiharkan.
Kehadiran pembina statik akan menghalang penambahan Harta jenis BeforeFieldInit. Ini mengehadkan pengoptimuman masa jalan.
Sesuatu medan yang diisytiharkan sebagai statik baca sahaja hanya boleh ditetapkan sebagai sebahagian daripadanya dalam pengisytiharan atau pembina statik. Apabila tiada pembina statik yang jelas Kandungan yang perlu diterjemahkan ialah: diperlukan, mulakan medan statik pada pengisytiharan, bukannya melalui statik Kandungan yang perlu diterjemahkan ialah: diperlukan, mulakan medan statik pada pengisytiharan, bukannya melalui statik Pembina digunakan untuk pengoptimuman masa jalan yang lebih baik.
Demonstrasi Langsung
using System; namespace DemoApplication{ public class Program{ static void Main(string[] args){ Car user = new Car(); Car user1 = new Car(); Console.ReadLine(); } } public class Car{ static Car(){ Console.WriteLine("Static constructor called"); } public Car(){ Console.WriteLine("Default constructor called"); } } }
Static constructor called Default constructor called Default constructor called
Dalam contoh di atas, kita dapat melihat bahawa pembina statik dipanggil sekali sahaja.
Demonstrasi dalam talian
using System; using System.Threading; namespace DemoApplication{ public class Car{ protected static readonly DateTime globalStartTime; protected int RouteNumber { get; set; } static Car(){ globalStartTime = DateTime.Now; Console.WriteLine($"Static constructor called. Global start time: {globalStartTime.ToLongTimeString()}"); } public Car(int routeNum){ RouteNumber = routeNum; Console.WriteLine($"Car {RouteNumber} is created."); } public void Drive(){ TimeSpan elapsedTime = DateTime.Now - globalStartTime; Console.WriteLine($"Car {this.RouteNumber} is starting its route {elapsedTime.Milliseconds} minutes after global start time {globalStartTime.ToShortTimeString()}."); } } class TestCar{ static void Main(){ Car car1 = new Car(1); Car car2 = new Car(2); car1.Drive(); Thread.Sleep(25); car2.Drive(); Console.ReadLine(); } } }
Static constructor called. Global start time: 7:09:06 AM Car 1 is created. Car 2 is created. Car 1 is starting its route25 minutes after global start time7:09 AM. Car 2 is starting its route50 minutes after global start time7:09 AM.
Atas ialah kandungan terperinci Apakah kegunaan pembina statik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!