کلاس static

در جلسه قبل با مفهوم کلیدواژه Static آشنا شدیم در این جلسه می خواهیم با کلاس static و متد سازنده static در سی شارپ آشنا شویم.

برای ساخت کلاس Static کافی است که قبل از کلمه کلیدی class کلمه Static قرار دهیم .

static class ClassA
{

}

اگر یک کلاس Static باشد باید تمام فیلدها و متدهایش از نوع Static باشد.

یکی از مزایای کلاس Static این است که کامپایلر تضمین می کند که به هیچ عنوان نمونه سازی یا شی ای از روی آن ساخته نشود و این می تواند کار ما را ساده کند.

امّا این را هم باید در نظر گرفت که کلاس Static توی ارث بری شرکت نمی کند .

مثال: با هم برنامه ای بنویسیم تا یک مدل کلاس Static را ببینیم کار این برنامه این است که مسافت ها را به هم تبدیل کند؟

public static class Distance

{

public static double meterTocmeter(double meter)
{
return (meter * 100);
}

public static double cmeterTometer(double cmeter)
{
return (cmeter / 100);
}

public static double cmeterTomilimeter(double cmeter)
{
return (cmeter * 10);
}

public static double milimeterTocmeter(double milimeter)
{
return (milimeter / 10);
}

}

کنترل های مورد نیاز را روی فرم قرار داده و شروع به کد نویسی می کنیم:

private void button1_Click(object sender, EventArgs e)

{

double Number;
double cm;
Number = Convert.ToDouble(textBox1.Text);
cm = Distance.meterTocmeter(Number);
label1.Text = cm.ToString();

}

private void button2_Click(object sender, EventArgs e)
{

double Number;
double cm;
Number = Convert.ToDouble(textBox1.Text);
cm = Distance.cmeterTometer(Number);
label2.Text = cm.ToString();

}

private void button3_Click(object sender, EventArgs e)
{

double Number;
double cm;
Number = Convert.ToDouble(textBox1.Text);
cm = Distance.cmeterTomilimeter(Number);
label3.Text = cm.ToString();

}

private void button4_Click(object sender, EventArgs e)
{

double Number;
double cm;
Number = Convert.ToDouble(textBox1.Text);
cm = Distance.milimeterTocmeter (Number);
label4.Text = cm.ToString();

}

برنامه را اجرا می کنیم:

کلاس static

کلاس static

کلاس static

خب حتما با این مثال متوجه مفهوم کلاس Static شدید. حالا سراغ متد سازنده Static در سی شارپ میرویم.

متد سازنده static در سی شارپ

نکات:

  1. هر کلاس فقط می تواند یک عدد متد سازنده Static داشته باشد.
  2. متد سازنده static  سطح دسترسی ندارد.
  3. تابع سازنده Static ورودی هم نمی تواند داشته باشد در نتیجه نمی توانیمoverload کنیم.
  4. فقط یکبار اجرا می شود.
  5. معمولا برای مقادیر استاتیک استفاده می کنیم .

مثال:

//————————————

using System.Windows.Forms;

namespace Session10_OOP
{
class ClassA
{

public static void Show ()

  {

  }

static ClassA()
{
MessageBox.Show(“Run”);
}

}
}

کنترل button را روی فرم قرار می دهیم و از ClassA یک نمونه می سازیم:

private void button1_Click(object sender, EventArgs e)
{
ClassA c = new ClassA();
}

برنامه را اجرا می کنیم، وقتی روی کنترل button کلیک کنیم سازنده استاتیک خود به خود اجرا می شود:

متد سازنده static در سی شارپ

اگر از روی ClassA چند نمونه بسازیم چه اتفاقی می افتد؟

private void button1_Click(object sender, EventArgs e)
{

ClassA c = new ClassA();
ClassA d = new ClassA();
ClassA f = new ClassA();

}

اگر چند تا نمونه سازی انجام شود فقط اولی اجرا می شود.

می خواهیم متد Show() داخل ClassA را فرا خوانی کنیم:

private void button2_Click(object sender, EventArgs e)

{
ClassA.Show();
}

برنامه را اجرا می کنیم و روی کنترل button2 کلیک می کنیم:

متد سازنده static در سی شارپ

مشاهده می کنید که وقتی تابع ()Show که ازنوع static است را فراخوانی می کنیم خود به خود متد سازنده static در سی شارپ اجرا می شود.

در نتیجه متد سازنده static در سی شارپ حتی وقتی متد static فراخوانی می شود بار اول هم اجرا می شود فقط هم یکبار اجرا می شود.

خب آموزش امروز هم به پایان رسید. امیدواریم به طور کامل با مفاهیم را متوجه شده باشید.