Bagikan melalui


statis (Referensi C#)

Halaman ini mencakup kata kunci pemodifikasi static. Kata kunci static juga merupakan bagian dari direktif using static.

Gunakan pemodifikasi static untuk mendeklarasikan anggota statis, yang termasuk dalam jenis itu sendiri alih-alih objek tertentu. Pemodifikasi static dapat digunakan untuk mendeklarasikan kelas static. Di kelas, antarmuka, dan struktur, Anda dapat menambahkan pemodifikasi static ke bidang, metode, properti, operator, peristiwa, dan konstruktor. Pemodifikasi static tidak dapat digunakan dengan pengindeks atau penyelesai. Untuk informasi lebih lanjut, lihat Kelas Statik dan Anggota Kelas Statik.

Anda dapat menambahkan pengubah static ke fungsi lokal. Fungsi lokal statis tidak dapat mengambil variabel lokal atau status instans.

Anda dapat menambahkan pengubah static ke ekspresi lambda atau metode anonim. Metode lambda statis atau anonim tidak dapat menangkap variabel lokal atau status instans.

Contoh - kelas statis

Kelas berikut dinyatakan sebagai static dan hanya berisi metode static:

static class CompanyEmployee
{
    public static void DoSomething() { /*...*/ }
    public static void DoSomethingElse() { /*...*/  }
}

Deklarasi konstanta atau jenis secara implisit adalah anggota static. Anggota static tidak dapat dirujuk melalui instans. Sebaliknya, ini dirujuk melalui nama jenis. Sebagai contoh, perhatikan kelas berikut:

public class MyBaseC
{
    public struct MyStruct
    {
        public static int x = 100;
    }
}

Untuk merujuk ke anggota staticx, gunakan nama yang sepenuhnya memenuhi syarat, MyBaseC.MyStruct.x, kecuali anggota dapat diakses dari cakupan yang sama:

Console.WriteLine(MyBaseC.MyStruct.x);

Meskipun instans kelas berisi salinan terpisah dari semua bidang instans kelas, hanya ada satu salinan setiap bidang static.

Tidak bleh menggunakan this untuk referensi metode static atau pengakses properti.

Jika kata kunci static diterapkan ke kelas, semua anggota kelas seharusnya static.

Kelas, antarmuka, dan kelas static mungkin memiliki konstruktor static. Konstruktor static dipanggil pada beberapa titik antara ketika program dimulai dan kelas dibuat.

Catatan

Kata kunci static lebih dibatasi penggunaanya dibandingkan di C++. Untuk membandingkan dengan kata kunci C++, lihat kelas Storage (C++).

Untuk menunjukkan anggota static, pertimbangkan kelas yang mewakili karyawan perusahaan. Asumsikan bahwa kelas berisi metode untuk menghitung karyawan dan bidang untuk menyimpan jumlah karyawan. Metode dan bidang tidak termasuk dalam satu instans karyawan. Sebaliknya, mereka termasuk dalam kelas karyawan secara keseluruhan. Mereka harus dinyatakan sebagai anggota static dari kelas.

Contoh - bidang dan metode statis

Contoh ini membaca nama dan ID karyawan baru, menaikkan penghitung karyawan satu per satu, dan menampilkan informasi untuk karyawan baru dan jumlah karyawan baru. Program ini membaca jumlah karyawan saat ini dari papan tombol.

public class Employee4
{
    public string id;
    public string name;

    public Employee4()
    {
    }

    public Employee4(string name, string id)
    {
        this.name = name;
        this.id = id;
    }

    public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }
}

class MainClass : Employee4
{
    static void Main()
    {
        Console.Write("Enter the employee's name: ");
        string name = Console.ReadLine();
        Console.Write("Enter the employee's ID: ");
        string id = Console.ReadLine();

        // Create and configure the employee object.
        Employee4 e = new Employee4(name, id);
        Console.Write("Enter the current number of employees: ");
        string n = Console.ReadLine();
        Employee4.employeeCounter = Int32.Parse(n);
        Employee4.AddEmployee();

        // Display the new information.
        Console.WriteLine($"Name: {e.name}");
        Console.WriteLine($"ID:   {e.id}");
        Console.WriteLine($"New Number of Employees: {Employee4.employeeCounter}");
    }
}
/*
Input:
Matthias Berndt
AF643G
15
 *
Sample Output:
Enter the employee's name: Matthias Berndt
Enter the employee's ID: AF643G
Enter the current number of employees: 15
Name: Matthias Berndt
ID:   AF643G
New Number of Employees: 16
*/

Contoh - inisialisasi statis

Contoh ini menunjukkan bahwa Anda dapat menginisialisasi bidang static dengan menggunakan bidang static lainnya yang belum dideklarasikan. Hasilnya tidak akan ditentukan hingga Anda secara eksplisit menetapkan nilai ke bidang static.

class Test
{
    static int x = y;
    static int y = 5;

    static void Main()
    {
        Console.WriteLine(Test.x);
        Console.WriteLine(Test.y);

        Test.x = 99;
        Console.WriteLine(Test.x);
    }
}
/*
Output:
    0
    5
    99
*/

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga