Konstruktor Statis
Inisialisasi keadaan statis tepat satu kali.
Konstruktor Statis adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Apa Itu Konstruktor Statis?
Konstruktor statis menginisialisasi data statis untuk sebuah kelas. Konstruktor ini dijalankan secara otomatis satu kali, sebelum kelas digunakan untuk pertama kalinya, dan Anda tidak pernah memanggilnya secara langsung.
using System;
class App
{
public static string Version;
static App()
{
Version = "1.0.0";
Console.WriteLine("Static constructor ran");
}
}
class Program
{
static void Main()
{
Console.WriteLine(App.Version);
}
}Aturan Sintaks
Konstruktor statis menggunakan kata kunci static, memiliki nama kelas, tidak menerima parameter, dan tidak memiliki pengubah akses.
using System;
class Config
{
public static int MaxUsers;
static Config()
{
MaxUsers = 100;
}
}
class Program
{
static void Main()
{
Console.WriteLine("Max: " + Config.MaxUsers);
}
}Berjalan Tepat Sekali
Terlepas dari berapa kali Anda menggunakan kelas tersebut, konstruktor statis hanya dijalankan satu kali, yaitu saat pertama kali diperlukan.
using System;
class Counter
{
public static int Instances;
static Counter()
{
Console.WriteLine("Initializing static state");
Instances = 0;
}
public Counter() { Instances++; }
}
class Program
{
static void Main()
{
new Counter();
new Counter();
Console.WriteLine("Instances: " + Counter.Instances);
}
}Kapan Ini Terpicu?
Lingkungan eksekusi memanggilnya tepat sebelum akses pertama ke anggota statis mana pun OR pembuatan instans pertama, mana pun yang terjadi lebih dahulu.
using System;
class Lazy
{
public static string Data;
static Lazy()
{
Console.WriteLine("Triggered now");
Data = "ready";
}
}
class Program
{
static void Main()
{
Console.WriteLine("Before access");
Console.WriteLine(Lazy.Data);
}
}Menginisialisasi Data Statis yang Kompleks
Gunakan konstruktor statis ketika atribut statis memerlukan logika nyata untuk disiapkan, bukan hanya nilai literal sederhana.
using System;
using System.Collections.Generic;
class Lookup
{
public static Dictionary<int, string> Table;
static Lookup()
{
Table = new Dictionary<int, string>();
for (int i = 1; i <= 3; i++)
Table[i] = "Item" + i;
}
}
class Program
{
static void Main()
{
Console.WriteLine(Lookup.Table[2]);
}
}Konstruktor Statis vs Penginisialisasi Atribut
Nilai sederhana dapat menggunakan penginisialisasi langsung. Konstruktor statis digunakan untuk penyiapan yang memerlukan pernyataan, perulangan, atau penanganan kesalahan.
using System;
class Settings
{
public static int Simple = 10; // inline initializer
public static int Computed; // needs logic
static Settings()
{
Computed = Simple * Simple;
}
}
class Program
{
static void Main()
{
Console.WriteLine(Settings.Simple + ", " + Settings.Computed);
}
}Tidak Boleh Ada Parameter
Karena konstruktor statis dipanggil oleh lingkungan eksekusi untuk Anda, konstruktor ini tidak dapat menerima argumen. Semua masukannya harus berupa data statis lain atau konstanta.
using System;
class Clock
{
public static int StartHour;
static Clock()
{
StartHour = 9;
}
}
class Program
{
static void Main()
{
Console.WriteLine("Start: " + Clock.StartHour);
}
}Menggabungkan Konstruktor Statis dan Instans
Sebuah kelas dapat memiliki keduanya. Konstruktor statis dijalankan satu kali untuk tipe tersebut; konstruktor instans dijalankan untuk setiap objek.
using System;
class Game
{
public static string Title;
public int Score;
static Game()
{
Title = "Coddy Quest";
}
public Game(int score)
{
Score = score;
}
}
class Program
{
static void Main()
{
var g = new Game(50);
Console.WriteLine(Game.Title + " score " + g.Score);
}
}Jaminan Urutan
Konstruktor statis dijamin selesai sebelum badan konstruktor instans mana pun yang memicunya dijalankan, sehingga state statis selalu siap.
using System;
class Service
{
public static string Endpoint;
static Service()
{
Endpoint = "https://api.example.com";
}
public Service()
{
Console.WriteLine("Using " + Endpoint);
}
}
class Program
{
static void Main()
{
new Service();
}
}Gunakan Secukupnya
Konstruktor statis menambahkan pemeriksaan satu kali sebelum kelas digunakan dan dapat menurunkan kinerja jika digunakan secara berlebihan atau jika melempar kesalahan. Buat konstruktor tersebut tetap singkat dan andal.
using System;
class Cache
{
public static int[] Data;
static Cache()
{
Data = new int[] { 2, 4, 6, 8 };
}
}
class Program
{
static void Main()
{
Console.WriteLine(Cache.Data[3]);
}
}Menyatukannya
Konstruktor statis ideal untuk penyiapan satu kali bagi data bersama yang hanya-baca, seperti tabel pencarian atau konfigurasi yang dimuat dari konstanta.
using System;
using System.Collections.Generic;
class Currency
{
public static Dictionary<string, string> Symbols;
static Currency()
{
Symbols = new Dictionary<string, string>
{
["USD"] = "$",
["EUR"] = "E",
["JPY"] = "Y"
};
}
}
class Program
{
static void Main()
{
Console.WriteLine("USD symbol: " + Currency.Symbols["USD"]);
}
}Pemeriksaan Singkat
Uji pemahaman Anda tentang konstruktor statis.
Ringkasan
Konstruktor statis menggunakan static ClassName() tanpa parameter dan tanpa pengubah akses. Konstruktor ini dijalankan satu kali secara otomatis, sebelum kelas digunakan untuk pertama kalinya, guna menginisialisasi state statis yang memerlukan logika nyata. Gunakan konstruktor ini secukupnya untuk penyiapan satu kali bagi data bersama.
using System;
class Demo
{
public static int Value;
static Demo() { Value = 42; }
}
class Program
{
static void Main()
{
Console.WriteLine(Demo.Value);
}
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Konstruktor Statis” gratis?
Ya — teks lengkap “Konstruktor Statis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Konstruktor Statis”?
Inisialisasi keadaan statis tepat satu kali. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Konstruktor Statis” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendefinisikan Konstruktor
- Rangkaian Konstruktor dengan this
- Inisialisasi Objek dan Koleksi
- Konstruktor Statis