اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
2 سال پیش / خواندن دقیقه

کلمه کلیدی Static در سی شارپ +مثال

با استفاده از کلمه ی کلیدی Static میتوان کلاس هایی را تعریف کرد که نیاز نباشد از آنها نمونه سازی کرد. از این کلمه برای اعضای کلاس هم استفاده میشود. میتوان به اعضای استاتیک در سطح کلاس دسترسی داشت. در این فصل با کلمه ی کلید Static آشنا خواهیم شد.

کلمه کلیدی Static

زبان سی شارپ مانند بسیاری از زبان های برنامه نویسی همچون C++ ، Java و ... شامل کلمه کلیدی static است. کلمه static را می توان بر روی کلاس ها، متغیرها، صفات، عملگرها، رویدادها و سازنده ها اعمال کرد. اگر کلمه کلیدی static را بر روی یک کلاس اعمال کنیم دیگر نمی توان از آن کلاس با استفاده از کلمه کلیدی new نمونه‌سازی کرد. اگر این کلمه بر روی یک متغیر ، متد و یا یک صفت از یک کلاس اعمال شود ، آنگاه می توان به آنها بدون نمونه سازی از کلاس دسترسی داشت.

نمونه مثال زیر این نحوه دسترسی را نشان میدهد :

public static class MyStaticClass
{
    public static int myStaticVariable = 0;
    public static void MyStaticMethod()
    {
        Console.WriteLine("This is a static method.");
    }
    public static int MyStaticProperty { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        
        Console.WriteLine(MyStaticClass.myStaticVariable);
        MyStaticClass.MyStaticMethod();
        MyStaticClass.MyStaticProperty = 100;
        Console.WriteLine(MyStaticClass.MyStaticProperty);
    }
}

خروجی نمونه مثال بالا به شکل زیر است :

0 This is a static method. 100

در نمونه مثال بالا MyStaticClass یک کلاس static بوده که شامل متغیر ،  متد و صفات static است. تمام اعضای static می‌توانند با استفاده از نام کلاس و بدون نمونه‌سازی مورد دسترسی قرار بگیرند. برای مثال ()MyStaticClass.MyStaticMethod .

می توان از اعضای static در یک کلاس غیر استاتیک نیز استفاده کرد. در این حالت می توان شی ایی از کلاس ایجاد کرد. اما با استفاده از آن شی فقط می‌توان به اعضای غیر استاتیک کلاس دسترسی داشت. اعضای استاتیک از طریق نام کلاس در دسترس هستند. به نمونه مثال زیر توجه کنید :

public class MyNonStaticClass
{
    private static int myStaticVariable = 0;
    public static void MyStaticMethod()
    {
        Console.WriteLine("This is static method.");
    }
    public void myNonStaticMethod()
    {
        Console.WriteLine("Non-static method");
    }
}

در نمونه مثال بالا کلاس MyNonStaticClass می‌تواند نمونه سازی شده و اعضای غیر استاتیک آن مورد دستیابی قرار بگیرند. با این حال با استفاده از شی ایجاد شده نمی توان به اعضای استاتیک کلاس دسترسی پیدا کرد :

 

کلمه کلیدی Static در سی شارپ +مثال

سازنده Static در سی شارپ

یک کلاس استاتیک و یا غیر استاتیک می‌تواند شامل سازنده Static باشد. در این صورت نباید از کلمه سطح دسترسی همچون public ، private و ... استفاده نمود. یک سازنده استاتیک در یک کلاس غیر استاتیک تنها یک بار آن هم زمانی که برای بار اول کلاس نمونه‌سازی می‌شود، فراخوانی خواهد شد. به همین ترتیب یک سازنده استاتیک در یک کلاس استاتیک هم تنها یک بار، آن هم زمانی که هرکدام از اعضای Static کلاس مورد دستیابی قرار بگیرند، فراخوانی می شود. به نمونه مثال های زیر توجه کنید.

سازنده استاتیک در کلاس استاتیک  :

public static class MyStaticClass
{
    static MyStaticClass()
    {
        Console.WriteLine("Inside static constructor.");
    }
    public static int myStaticVariable = 0;
    public static void myStaticMethod()
    {
        Console.WriteLine("This is static method.");
    }
    public static int MyStaticProperty { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        
        MyStaticClass.myStaticVariable = 100;
        MyStaticClass.MyStaticProperty = 200;
        MyStaticClass.myStaticVariable = 300;
        MyStaticClass.MyStaticProperty = 400;
    }
}

خروجی نمونه مثال بالا به شکل زیر است :

Inside static constructor.

در نمونه مثال بالا با وجود اینکه اعضای استاتیک چندین بار مورد دستیابی قرار گرفته‌اند اما سازنده یک بار فراخوانی شده است.

سازنده استایک در کلاس غیر استاتیک :

public class MyNonStaticClass
{
    static MyNonStaticClass()
    {
        Console.WriteLine("Inside static constructor.");
    }
            
    public void myNonStaticMethod()
    {
        Console.WriteLine("Non-static method");
    }
}
class Program
{
    static void Main(string[] args)
    {
        MyNonStaticClass mnsObj1 = new MyNonStaticClass();
        MyNonStaticClass mnsObj2 = new MyNonStaticClass();
        MyNonStaticClass mnsObj3 = new MyNonStaticClass();
    }
}

خروجی نمونه مثال بالا به شکل زیر است :

Inside static constructor

در نمونه مثال بالا با وجود اینکه کلاس MyNonStaticClass چندین بار نمونه سازی شده است، سازنده استاتیک تنها یک بار فراخوانی می شود .

شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع