انواع متغیر در سی شارپ #C — کاربرد آن ها با مثال

تصویر شاخص انواع متغیر در سی شارپ #C

در این مقاله، از سری مقالات آموزشی پی استور به بررسی انواع متغیر در سی شارپ «#Types of Variables in C» و تفاوت‌ها و کاربردهای هر کدام خواهیم پرداخت، به‌ویژه تمرکز ما بر روی متغیرهای ثابت «Const» و فقط‌خواندنی «Readonly» خواهد بود که ویژگی‌ها و نحوه «Syntax» استفاده از آن‌ها در برنامه‌ها را توضیح خواهیم داد.

یک متغیر «Variable»، نامی است که به یک مکان حافظه اختصاص داده می‌شود و تمام عملیات انجام‌شده روی متغیر، بر آن مکان حافظه تأثیر می‌گذارد. در زبان سی شارپ #C، تمام متغیرها باید قبل از استفاده تعریف شوند. متغیر، واحد پایه‌ای ذخیره‌سازی در یک برنامه است. مقدار ذخیره‌شده در یک متغیر می‌تواند در طول اجرای برنامه تغییر کند.

مقدمه

در دنیای برنامه‌نویسی، متغیرها نقش اساسی در ذخیره‌سازی «Storaging» و پردازش «Processing» داده‌ها دارند. در زبان‌های برنامه‌نویسی شیء‌گرا مانند #C، متغیرها انواع مختلفی دارند که هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند. از جمله این انواع می‌توان به متغیرهای محلی، نمونه، استاتیک، ثابت و فقط‌خواندنی اشاره کرد که به تفصیل در مورد هر کدام از آن‌ها صحبت خواهیم کرد. هر یک از این متغیرها ویژگی‌هایی دارند که رفتار آن‌ها را در زمان اجرای برنامه تحت تأثیر قرار می‌دهد.

متغیرهای ثابت و فقط‌خواندنی از جمله مفاهیمی هستند که برای جلوگیری از تغییر مقادیر داده‌ها پس از مقداردهی اولیه در برنامه‌ها استفاده می‌شوند. این ویژگی‌ها به برنامه‌نویس این امکان را می‌دهند تا کنترل بیشتری بر روی داده‌های برنامه داشته باشند و از بروز اشتباهات ناشی از تغییرات ناخواسته جلوگیری کنند.

انواع متغیر در سی شارپ

در زبان برنامه‌نویسی سی‌شارپ، متغیرها انواع مختلفی دارند که هرکدام ویژگی‌ها و کاربردهای خاص خود را دارا هستند. انواع متغیرها عبارتند از:

  • متغیرهای محلی «Local variables»
  • متغیرهای نمونه یا غیر استاتیک «Instance variables or Non – Static Variables»
  • متغیرهای استاتیک یا کلاسی «Static Variables or Class Variables»
  • متغیرهای ثابت «Constant Variables»
  • متغیرهای فقط‌خواندنی «Readonly Variables»

در ادامه، ویژگی‌های هر نوع متغیر توضیح داده شده و برای هرکدام مثالی آورده‌ایم تا شما بتوانید تفاوت‌ها و ویژگی‌های هر کدام از آن‌ها را بهتر درک کنید. برای اینکه برنامه نویسی زبان سی شارپ را بهتر یاد بگیرید می‌توانید هر کدام از مثال‌ها را در محیط برنامه نویسی آنلاین پی استور Pstore Online Compiler بنویسید و اجرا کنید.

اگر می‌خواهید مفاهیم بیشتری از برنامه‌نویسی سی‌شارپ همچون حلقه‌ها، شرط‌ها و توابع را یاد بگیرید، می‌توانید از دوره آموزش برنامه نویسی سی‌شارپ موجود در مجموعه آموزشی پی استور استفاده کنید.

متغیر محلی در سی شارپ

متغیرهای محلی یکی از انواع متغیر در سی شارپ هستند که در داخل یک متد، سازنده، یا بلوک کد تعریف می‌شوند.

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

متغیرهای محلی باید قبل از استفاده مقداردهی شوند و معمولاً برای ذخیره‌سازی موقت داده‌ها در یک برنامه به کار می‌روند. دامنه این متغیرها فقط درون بلوکی است که متغیر در آن تعریف شده است؛ به عبارت دیگر، تنها در همان بلوک می‌توان به این متغیرها دسترسی داشت.

مثال ۱

// C# program to demonstrate 
// the local variables
using System;
class StudentDetails 
{
 // Method
 public void StudentAge()
 {
  
  // local variable age
  int age = 0;
  
  age = age + 10;
  Console.WriteLine("Student age is : " + age);
 }

 // Main Method
 public static void Main(String[] args)
 {
  // Creating object
  StudentDetails obj = new StudentDetails();
  
  // calling the function
  obj.StudentAge();
 }
}
Student age is : 10

توضیح: در برنامه‌ی بالا، متغیر age یک متغیر محلی برای تابع ()StudentAge است. اگر بخواهیم از متغیر age خارج از تابع ()StudentAge استفاده کنیم، کامپایلر خطا تولید می‌کند، همان‌طور که در برنامه‌ی زیر نشان داده شده است.

مثال ۲

// C# program to demonstrate the error
// due to using the local variable 
// outside its scope
using System;

class StudentDetails 
{
 // Method
 public void StudentAge()
 { 
  
  // local variable age
  int age = 0;
  age = age + 10;
 }

 // Main Method
 public static void Main(String[] args)
 {
  
  // using local variable age outside it's scope
  Console.WriteLine("Student age is : " + age);
 }
}

خطا:

prog.cs(22,43): error CS0103: The name `age’ does not exist in the current context

متغیر غیر استاتیک در سی شارپ

متغیرهای نمونه، که متغیرهای غیر استاتیک نیز نامیده می‌شوند، در داخل یک کلاس ولی خارج از هر متد، سازنده یا بلوک تعریف می‌شوند. این متغیرها ویژگی‌ها یا خصوصیات اشیاء ایجاد شده از آن کلاس را نمایان می‌کنند.

از آنجا که این متغیرها در کلاس تعریف می‌شوند، هنگامی که یک شیء از کلاس ایجاد می‌شود، این متغیرها ساخته می‌شوند و زمانی که شیء از بین می‌رود، این متغیرها نیز از بین می‌روند. برخلاف متغیرهای محلی، برای متغیرهای نمونه می‌توان از مشخص‌کننده‌های دسترسی (Access Specifiers) استفاده کرد.

مثال

// C# program to illustrate the
// Instance variables
using System;

class Marks
{	
 // These variables are instance variables.
 // These variables are in a class and 
 // are not inside any function
 int engMarks;
 int mathsMarks;
 int phyMarks;

 // Main Method
 public static void Main(String[] args)
 { 		
  // first object
  Marks obj1 = new Marks();
  obj1.engMarks = 90;
  obj1.mathsMarks = 80;
  obj1.phyMarks = 93;

  // second object
  Marks obj2 = new Marks();
  obj2.engMarks = 95;
  obj2.mathsMarks = 70;
  obj2.phyMarks = 90;

  // displaying marks for first object
  Console.WriteLine("Marks for first object:");
  Console.WriteLine(obj1.engMarks);
  Console.WriteLine(obj1.mathsMarks);
  Console.WriteLine(obj1.phyMarks);

  // displaying marks for second object
  Console.WriteLine("Marks for second object:");
  Console.WriteLine(obj2.engMarks);
  Console.WriteLine(obj2.mathsMarks);
  Console.WriteLine(obj2.phyMarks);
 }
}

خروجی

Marks for first object:
۹۰
۸۰
۹۳
Marks for second object:
۹۵
۷۰
۹۰

توضیح: در برنامه‌ی بالا، متغیرهای engMarks، mathsMarks و phyMarks متغیرهای نمونه هستند. اگر همان‌طور که در برنامه نشان داده شده است، چندین شیء وجود داشته باشد، هر شیء نسخه‌های جداگانه‌ای از متغیرهای نمونه خواهد داشت. از خروجی مشخص است که هر شیء نسخه‌ی مخصوص به خود از متغیرهای نمونه دارد.

متغیر استاتیک در سی شارپ

متغیرهای استاتیک که به‌عنوان متغیرهای کلاسی نیز شناخته می‌شوند، متغیرهایی هستند که صریحاً با استفاده از کلمه کلیدی static تعریف می‌شوند یا اگر یک متغیر در یک بلوک استاتیک تعریف شود، آن متغیر به‌عنوان متغیر استاتیک شناخته می‌شود.

این متغیرها بین تمامی نمونه‌های کلاس مشترک هستند و مقادیر آن‌ها در طول اجرای برنامه حفظ می‌شود. متغیرهای استاتیک یک مکان ذخیره‌سازی مشترک برای تمام اشیاء آن کلاس فراهم می‌کنند.

این متغیرها مشابه متغیرهای نمونه تعریف می‌شوند، اما تفاوت این است که متغیرهای استاتیک با استفاده از کلمه کلیدی static در داخل یک کلاس و خارج از هر متد، سازنده، یا بلوک تعریف می‌شوند. برخلاف متغیرهای نمونه، تنها یک نسخه از متغیر استاتیک برای هر کلاس وجود دارد، صرف‌نظر از اینکه چند شیء از آن کلاس ایجاد شود. متغیرهای استاتیک در ابتدای اجرای برنامه ایجاد می‌شوند و به‌طور خودکار هنگام پایان اجرای برنامه از بین می‌روند.

نکته: برای دسترسی به متغیرهای استاتیک نیازی به ایجاد شیء از کلاس نیست؛ می‌توان مستقیماً به متغیر دسترسی داشت، به این صورت:

class_name.variable_name;

مثال

// C# program to illustrate
// the static variables
using System;
class Emp
{

 // static variable salary
 static double salary;
 static String name = "Aks";

 // Main Method
 public static void Main(String[] args)
 {

  // accessing static variable 
  // without object
  Emp.salary = 100000;
  
  Console.WriteLine(Emp.name + "'s average salary:" + Emp.salary);
 }
}

خروجی

taha's average salary:100000

نکته: مقداردهی اولیه متغیرهای غیر استاتیک با ایجاد نمونه (شیء) و فراخوانی سازنده مرتبط است، بنابراین متغیرهای غیر استاتیک می‌توانند از طریق سازنده مقداردهی شوند. اما برای متغیرهای استاتیک، از طریق سازنده مقداردهی نمی‌شوند زیرا هر بار که سازنده فراخوانی شود، مقدار موجود بازنویسی می‌شود.

تفاوت بین متغیر غیر استاتیک و متغیر استاتیک در سی شارپ

  • هر شیء نسخه‌ی مخصوص به خود از متغیر نمونه را دارد. تنها یک نسخه از متغیر استاتیک برای کل کلاس وجود دارد، بدون توجه به تعداد اشیائی که ایجاد می‌کنیم.
  • تغییراتی که در متغیر نمونه از طریق یک شیء ایجاد می‌شود، در سایر اشیاء منعکس نمی‌شود زیرا هر شیء نسخه‌ی جداگانه‌ای از متغیر نمونه دارد. در مورد متغیرهای استاتیک، تغییرات در مقدار آن برای تمام اشیاء منعکس می‌شود زیرا متغیر استاتیک بین تمام اشیاء مشترک است.
  • متغیرهای نمونه از طریق ارجاعات به اشیاء قابل دسترسی هستند. متغیرهای استاتیک می‌توانند مستقیماً با استفاده از نام کلاس دسترسی پیدا کنند.
  • متغیرهای نمونه مقداردهی نمی‌شوند اگر هیچ شیئی ایجاد نشود، اما اگر n شیء ایجاد شود، n بار مقداردهی می‌شوند. متغیر استاتیک تنها یک بار در طول چرخه‌ی عمر کلاس مقداردهی می‌شود.
  • نحوه نوشتار متغیرهای نمونه و استاتیک:
class Example
       {
           static int a; // static variable
           int b;        // instance variable
       }

متغیر ثابت در سی شارپ

اگر یک متغیر با استفاده از کلمه کلیدی const تعریف شود، به‌عنوان یک متغیر ثابت شناخته می‌شود و این متغیرهای ثابت پس از تعریف نمی‌توانند تغییر کنند. بنابراین، حتماً باید در زمان تعریف مقداردهی شوند.

متغیرهای ثابت معمولاً برای مقادیری استفاده می‌شوند که باید در طول برنامه ثابت بمانند، مانند ثابت‌های ریاضی یا تنظیمات پیکربندی، که به بهبود خوانایی کد و جلوگیری از تغییرات تصادفی کمک می‌کنند.

مثال ۱: برنامه زیر خطا خواهد داد زیرا در زمان تعریف متغیر ثابت، مقداری اختصاص داده نشده است.

// C# program to illustrate the
// constant variables
using System;
class Program
{
 // constant variable max
 // but no value is provided
 const float max;

 // Main Method
 public static void Main()
 {		
  // creating object
  Program obj = new Program();
  
  // it will give error
  Console.WriteLine("The value of b is = " + Program.b);
 }
}

خطا

prog.cs(8,17): error CS0145: A const field requires a value to be provided 

مثال ۲: برنامه‌ای برای نمایش استفاده از متغیرهای ثابت:

// C# program to illustrate the
// constant variable
using System;
class Program
{
 // instance variable
 int a = 10; 
 
 // static variable
 static int b = 20; 

 // constant variable
 const float max = 50;

 // Main Method
 public static void Main()
 {		
  // creating object
  Program obj = new Program();
  
  // displaying result
  Console.WriteLine("The value of a is = " + obj.a);
  Console.WriteLine("The value of b is = " + Program.b);
  Console.WriteLine("The value of max is = " + Program.max);
 }
}

خروجی

The value of a is = 10
The value of b is = 20
The value of max is = 50

نکات مهم درباره متغیرهای ثابت:

  • رفتار متغیرهای ثابت شبیه به متغیرهای استاتیک است، یعنی در طول چرخه عمر یک کلاس تنها یک بار مقداردهی می‌شوند و برای دسترسی یا مقداردهی به آنها نیازی به نمونه‌سازی از کلاس نیست.
  • تفاوت بین متغیرهای ثابت و استاتیک این است که متغیرهای استاتیک می‌توانند تغییر کنند، در حالی که متغیرهای ثابت پس از تعریف دیگر قابل تغییر نیستند.

متغیر فقط خواندنی در سی شارپ

اگر یک متغیر با استفاده از کلمه کلیدی readonly تعریف شود، به‌عنوان متغیر فقط‌خواندنی شناخته می‌شود. این متغیرها نمی‌توانند تغییر کنند، مشابه متغیرهای ثابت، اما می‌توانند پس از مقداردهی اولیه تغییر کنند.

نیازی نیست که متغیر فقط‌خواندنی در زمان تعریف مقداردهی شود. آنها می‌توانند تحت یک سازنده نیز مقداردهی شوند.

رفتار متغیرهای فقط‌خواندنی شبیه به متغیرهای غیر استاتیک است، یعنی تنها پس از ایجاد نمونه از کلاس مقداردهی می‌شوند و برای هر نمونه به‌صورت جداگانه مقداردهی می‌شوند.

مثال ۱: در برنامه زیر، متغیر فقط‌خواندنی k با هیچ مقداری مقداردهی نشده است. اما هنگام چاپ مقدار آن، مقدار پیش‌فرض نوع int، یعنی ۰، نمایش داده می‌شود.

// C# program to show the use
// of readonly variables
// without initializing it
using System;
class Program
{
 // instance variable
 int a = 80; 
 
 // static variable
 static int b = 40; 

 // Constant variables
 const float max = 50;
 
 // readonly variables
 readonly int k;

 // Main Method
 public static void Main()
 {
  
  // Creating object
  Program obj = new Program();
  
  Console.WriteLine("The value of a is = " + obj.a);
  Console.WriteLine("The value of b is = " + Program.b);
  Console.WriteLine("The value of max is = " + Program.max);
  Console.WriteLine("The value of k is = " + obj.k);
 }
}

خروجی

The value of a is = 80
The value of b is = 40
The value of max is = 50
The value of k is = 0

مثال ۲: برای نمایش مقداردهی متغیر فقط‌خواندنی در سازنده.

// C# program to illustrate the
// initialization of readonly
// variables in the constructor
using System;
class Pstore
{
 // instance variable
 int a = 80; 
 
 // static variable
 static int b = 40; 

 // Constant variables
 const float max = 50;
 
 // readonly variables
 readonly int k;

 // constructor
 public Pstore()
 {

  // initializing readonly
  // variable k
  this.k = 90;
 }

 // Main Method
 public static void Main()
 {
  
  // Creating object
  Pstore obj = new Pstore();

  Console.WriteLine("The value of a is = " + obj.a);
  Console.WriteLine("The value of b is = " + Pstore.b);
  Console.WriteLine("The value of max is = " + Pstore.max);
  Console.WriteLine("The value of k is = " + obj.k);
 }
}

خروجی

The value of a is = 80
The value of b is = 40
The value of max is = 50
The value of k is = 90

مثال ۳: برنامه‌ای برای نمایش زمانی که متغیر فقط‌خواندنی پس از تعریف و خارج از سازنده مقداردهی می‌شود.

// C# program to illustrate the
// initialization of readonly
// variables twice 
using System;
class Pstore
{
 // instance variable
 int a = 80; 
 
 // static variable
 static int b = 40; 

 // Constant variables
 const float max = 50;
 
 // readonly variables
 readonly int k;

 // constructor
 public Pstore()
 {

  // first time initializing 
  // readonly variable k
  this.k = 90;
 }

 // Main Method
 public static void Main()
 {
  
  // Creating object
  Pstore obj = new Pstore();

  Console.WriteLine("The value of a is = " + obj.a);
  Console.WriteLine("The value of b is = " + Pstore.b);
  Console.WriteLine("The value of max is = " + Pstore.max);

  // initializing readonly variable again 
  // will compile time error
  obj.k = 55;

  Console.WriteLine("The value of k is = " + obj.k);
 }
}

خطا

prog.cs(41,13): error CS0191: A readonly field `Pstore.k’ cannot be assigned to (except in a constructor or a variable initializer)

نکات مهم درباره متغیرهای فقط‌خواندنی:

  • تنها تفاوت بین متغیرهای فقط‌خواندنی و متغیرهای نمونه این است که متغیرهای نمونه قابل تغییر هستند، اما متغیرهای فقط‌خواندنی نمی‌توانند تغییر کنند.
  • متغیر ثابت یک مقدار ثابت برای کل کلاس است، در حالی که متغیرهای فقط‌خواندنی یک مقدار ثابت برای هر نمونه از کلاس دارند.

جمع بندی

در این مقاله، انواع متغیر در سی شارپ مورد بررسی قرار گرفت. متغیرهای محلی، نمونه، استاتیک، ثابت و فقط‌خواندنی هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند که در برنامه‌نویسی می‌توانند تأثیر زیادی بر نحوه مدیریت داده‌ها و رفتار برنامه داشته باشند.

به طور خلاصه، متغیرها در سی شارپ برای هر توسعه‌دهنده‌ای که قصد ایجاد پروژه‌های پیچیده را دارد، ضروری هستند. انواع مختلفی از تعریف متغیرها به توسعه‌دهندگان این امکان را می‌دهند که داده‌ها را به روش‌هایی که پروژه‌هایشان نیاز دارند، اعمال کنند. آگاهی از هدف و کاربرد هر نوع متغیر می‌تواند به بهبود طراحی پروژه و کاهش تلاش‌های توسعه کمک کند. مهم‌ترین نکته این است که توسعه‌دهنده ساختار و اهمیت متغیرها در سی شارپ را هنگام برنامه‌نویسی یک برنامه جدید یا بازی درک کند. با در نظر گرفتن این نکات، شما باید قادر باشید به راحتی و با اطمینان از متغیرها در C# طبق نیاز خود استفاده کنید.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 5 از 8 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
مجله پی استور scholarhat geeksforgeeks

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

5 دیدگاه دربارهٔ «انواع متغیر در سی شارپ #C — کاربرد آن ها با مثال»

  1. سلام سپاسگزارم عالی بود. به خصوص که برنامه‌ها را خودم نوشتم و اجرا کردم بهم کمک کرد تا بهتر موضوع را درک کنم.

  2. سلام
    توضیحات عالی بود. الان کاملاً می‌دونم چطور انواع مختلف متغیرها رو تعریف و استفاده کنم. ممنون از این آموزش دقیق.

  3. توضیحات جامع و کاربردی بود. فقط کاش نسخه PDF مقاله هم برای دانلود می‌ذاشتید تا بتونیم راحت‌تر ذخیره کنیم.



برچسب‌ها:
سی شارپ


پیمایش به بالا