Aracılığıyla paylaş


Statik sınıflar ve statik sınıf üyelerini (C# Programlama Kılavuzu)

A statik sınıfı temel olarak statik olmayan sınıf ile aynı olsa da, bir fark vardır: static bir sýnýfýn başlatılamaz.Başka bir deyişle, kullanamazsınız Yeni sınıfı türünde bir değişken oluşturmak için anahtar sözcük.Örnek değişken olduğundan, statik sınıf üyelerini sınıf adını kullanarak erişirsiniz.Örneğin, sınıf statik varsa adlı UtilityClass adlı bir public yöntem olan MethodA, aşağıdaki örnekte gösterildiği gibi yöntemini çağırın:

UtilityClass.MethodA();

Static bir sýnýfýn uygun Konteyner yalnızca giriş parametreleri üzerinde çalışır ve get veya set herhangi bir iç oluşum alanlarına gerek yoktur yöntemler kümesi için kullanılabilir.Örneğin,.net Framework sınıf kitaplığı, statik System.Math sınıf saklamak veya belirli bir örneği için benzersiz olan verileri almak için hiçbir zorunluluğu olmadan bir matematiksel işlemleri yöntemler içerir Math sınıfı.Diğer bir deyişle, sınıfın üyeleri sınıf adı ve yöntem adı belirterek aşağıdaki örnekte gösterildiği gibi uygulanır.

double dub = -3.14;
Console.WriteLine(Math.Abs(dub));
Console.WriteLine(Math.Floor(dub));
Console.WriteLine(Math.Round(Math.Abs(dub)));

// Output:
// 3.14
// -4
// 3

Tüm sınıf türleri olduğu gibi static bir sýnýfýn tür bilgileri tarafından yüklenen .NET Framework ortak dil çalışma zamanı (clr) sınıfına başvuran program yüklendiğinde. Programın tam olarak ne zaman sınıf yüklü belirtemezsiniz.Ancak, yüklenen ve kendi alanlarına başlatıldı ve sınıf programınızı ilk kez başvurulan önce adlı statik kurucusu sağlanır.Statik oluşturucu yalnızca bir kez denir ve static bir sýnýfýn programınızın içinde barındıran uygulama etki alanının yaşam için bellekte kalır.

[!NOT]

Kendisini oluşturulması için yalnızca bir örneğini veren statik olmayan bir sınıf oluşturmak için bkz: C# uygulama Singleton.

Aşağıdaki listede, static bir sýnýfýn'ın başlıca özellikleri sağlar:

  • Yalnızca statik üyeleri içerir.

  • Örneği oluşturulamıyor.

  • Korumalı.

  • İçeremez Örnek oluşturucular.

Static birsýnýf oluşturma bu nedenle temelde yalnızca statik üyeleri ve özel bir kurucu içeren bir sınıf oluşturma aynıdır.Private kurucu sınıf örneğinin oluşturulmasını engeller.Hiçbir örnek üyeleri yanlışlıkla eklenmiş olduğundan emin olmak için derleyici denetleyebilirsiniz static bir sýnýfýn kullanmanın yararı olur.Derleyici bu sınıfın örneği oluşturulamaz garanti.

Statik sınıfların kapalı ve bu nedenle devralınamaz.Dışında herhangi bir sınıftan devralamaz Object.Statik sınıfların örnek oluşturucu içeremez; Ancak, statik oluşturucu içerebilir.Statik olmayan sınıflar sınıf Önemsiz olmayan başlatma gerektiren static üyeler içeriyorsa, statik oluşturucu tanımlamanız gerekir.Daha fazla bilgi için bkz. Statik Kurucular (C# Programlama Kılavuzu).

Örnek

Fahrenhayt derece ve derece Fahrenhayt sıcaklık dönüştürme iki yöntemi içeren statik bir sınıf örneği aşağıda verilmiştir:

    public static class TemperatureConverter
    {
        public static double CelsiusToFahrenheit(string temperatureCelsius)
        {
            // Convert argument to double for calculations.
            double celsius = Double.Parse(temperatureCelsius);

            // Convert Celsius to Fahrenheit.
            double fahrenheit = (celsius * 9 / 5) + 32;

            return fahrenheit;
        }

        public static double FahrenheitToCelsius(string temperatureFahrenheit)
        {
            // Convert argument to double for calculations.
            double fahrenheit = Double.Parse(temperatureFahrenheit);

            // Convert Fahrenheit to Celsius.
            double celsius = (fahrenheit - 32) * 5 / 9;

            return celsius;
        }
    }

    class TestTemperatureConverter
    {
        static void Main()
        {
            Console.WriteLine("Please select the convertor direction");
            Console.WriteLine("1. From Celsius to Fahrenheit.");
            Console.WriteLine("2. From Fahrenheit to Celsius.");
            Console.Write(":");

            string selection = Console.ReadLine();
            double F, C = 0;

            switch (selection)
            {
                case "1":
                    Console.Write("Please enter the Celsius temperature: ");
                    F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine());
                    Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F);
                    break;

                case "2":
                    Console.Write("Please enter the Fahrenheit temperature: ");
                    C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine());
                    Console.WriteLine("Temperature in Celsius: {0:F2}", C);
                    break;

                default:
                    Console.WriteLine("Please select a convertor.");
                    break;
            }

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
    /* Example Output:
        Please select the convertor direction
        1. From Celsius to Fahrenheit.
        2. From Fahrenheit to Celsius.
        :2
        Please enter the Fahrenheit temperature: 20
        Temperature in Celsius: -6.67
        Press any key to exit.
     */

Statik Üyeler

Statik olmayan sınıf statik yöntemler, alanları, özellikleri veya olayları içerir.Hatta sınıf örneği oluşturulduğunda statik üyesine bir sınıf üzerinde çağrılabilir.Statik üyesine sınıf adı, örnek adı her zaman erişilebilir.Kaç sınıfın örneklerini oluşturulan bağımsız olarak yalnızca bir kopyasını bir statik üyesi bulunmaktadır.Statik yöntemler ve Özellikler static olmayan alanlar ve bunların kapsayan tür olayların erişemez ve açıkça bir yöntemi parametre geçirilen sürece herhangi bir nesnenin bir örnek değişkenini erişemiyor.

Tüm bir sınıf statik olarak bildirmek üzere'den bazı statik üyesi olan bir statik olmayan sınıf bildirmek daha normaldir.Static alanlar iki yaygın kullanımlarından örneği nesneleri sayısı sayısını tutmak için veya tüm örnekleri arasında paylaşılan bir değer olmalıdır.

Statik yöntemler, aşırı ancak sınıf ve değil herhangi bir sınıfın örneğini ait olduğu için kılınmayan.

Bir alan olarak bildirilemez rağmen static const, bir const alan kendi davranış aslında statik.Türü örnekleri değil türe ait.Bu nedenle, const alanlara aynı kullanarak erişilebilir ClassName.MemberName static alanlar için kullanılan gösterim.Hiçbir nesne kopyası gereklidir.

C#, statik yerel değişkenler (yöntem kapsamda bildirilen değişkenler) desteklemez.

Kullanarak statik sınıf üyesi bildirmek static anahtar sözcükten önce aşağıdaki örnekte gösterildiği gibi member'ın dönüş türü:

public class Automobile
{
    public static int NumberOfWheels = 4;
    public static int SizeOfGasTank
    {
        get
        {
            return 15;
        }
    }
    public static void Drive() { }
    public static event EventType RunOutOfGas;

    // Other non-static fields and properties...
}

Static üyeler statik üyesine ilk kez ve statik oluşturucu önce erişmeden önce başlatılmış varsa, adı verilir.Statik sınıf üyesi erişmek için sınıfın adı yerine bir değişken adı üye konumunu belirtmek için aşağıdaki örnekte gösterildiği gibi kullanın:

Automobile.Drive();
int i = Automobile.NumberOfWheels;

Sınıfınızın static alanlar içeriyorsa, sınıfı yüklendiğinde, onları başlatır statik oluşturucu sağlar.

Örnek yöntemine bir çağrı oluşturur ama durağan bir yöntem çağrısı Microsoft Intermediate language (MSIL) çağrı yönergesi oluşturur bir callvirt yönergesi null bir nesne başvuruları için aynı zamanda denetler.Ancak, çoğu zaman ikisi arasındaki performans farkı önemli değil.

C# dil belirtiminin

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

Statik (C# Reference)

Sınıflar (C# Programlama Kılavuzu)

sınıf (C# Reference)

Statik Kurucular (C# Programlama Kılavuzu)

Örnek oluşturucular (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu