تبلیغات
دانلود سورس پروژه های مختلف برنامه نویسی، آموزش برنامه نویسی - سازنده ها و ساختار ها در سی شارپ
دانلود سورس پروژه های مختلف برنامه نویسی، آموزش برنامه نویسی
دانلود رایگان سورس پروژه
سایت برنامه نویسی تک کدر takcoder.ir


آموزش برنامه نویسی با استفاده از نوین ترین روش و ارائه پروژه های نمونه و مجموعه عظیم سورس کدهای آماده برای شما دوستان

مدیر سایت : Yahya Taherzadeh
نویسندگان
نظرسنجی
زبان برنامه نویسی مورد علاقه شما؟






Structure ها نوع های داده ای هستند شبیه به كلاس ها به این معنا كه می توانند Field و Method و Constructor داشته باشند و حتی در بعضی از موارد به خاطر نوع رفتاری كه Value Type ها دارند به جای كلاس ها استفاده شوند. برای تعریف یك Structure كافیست در جایی از namespace با استفاده از keyword ی كه به همین منظور ایجاد شده است یعنی struct شروع به ایجادش نمائیم:
public struct Teacher
{
    public int Age;
    public string Name;
    public void Print()
    {
        Console.WriteLine(“Name: {0}, Age: {1}”,Name, Age);
    }
}

همانطور كه می بینیم ساختار ظاهری Struct ها كاملا شبیه به كلاس است اما تفاوت اصلی آن ها در رفتارهایشان می باشد.

در تعریف رفتار های كلاس گفتیم وقتی شما یك شیء از نوع یك كلاس مثل Person ایجاد می كنین و بعد از آن شیء كپی تهیه می كنین فقط آدرس حافظه شیء قبلی به شیء جدید اختصاص یافته و در حقیقت شما فقط یك شیء دارید.
اما در مورد Struct ها جریان كاملا شبیه به كپی گرفتن از تایپ های بدون (Primitive Types) ها می باشد. به چند خط كد زیر دقت كنین:

کد:
Teacher t = new Teacher();
t.Name = “Ali”;
t.Age = 44;Teacher t2 = t;
t2.Name = “Reza”;t.Print();
t2.Print();

نكته بسیار مهم اینست كه اصولا به خاطر Value Type بودن Struct ها هیچ شیء ای در حافظه Heap ایجاد نشده است و فقط دو متغییر در حافظه Stack ایجاد شده است. نكته مهم دوم اینه كه وقتی شما از یك متغییر از نوع Struct كپی می گیرین تمامی مقادیر موجود در آن Struct كپی شده و در متغییر جدید یك كپی از آن مقادیر قرار خواهد گرفت. پس در نتیجه تغییراتی كه ما در متغییر دوم یعنی t2 دادیم برروی متغییر اول یا همان t تاثیری نخواهد داشت.

Constructors in Structures – سازنده ها در 
ساختار ها

نكته مهم دیگری كه می توان در مورد Struct ها بیان كرد در مورد سازنده ها در این جنس است. در پست قبلی در مورد ایجاد سازنده ها در كلاس ها صحبت كردیم و گفتم كه شما می توانین ورژن های مختلفی از سازنده ها را در یك كلاس داشته باشین. اما باید بگویم كه در مورد Struct ها جریان كمی متفاوت خواهد بود.
نكته اول: شما سازنده پیشفرض را در Struct ها دارین اما امكان تایپ كردن آن را به صورت دستی ندارین. به این معنی كه اگر شما یك Constructor بدون پارامتر در یك Struct تعریف كنین به Compile Time Error بر خورد خواهید كرد و در حقیقت شما نمی تونین هیچ تغییری در رفتار سازنده پیشفرض Struct ها ایجاد كنین. باید بدونین كه سازنده پیش فرض در Structureها در حقیقت یك object ایجاد نمی كند بلكه به تمامی متغییرهایی كه داخل Struct شما وجود دارند مقدار پیش فرض را Set می كند.

کد:
Teacher t = new Teacher();

در نتیجه كد بالا فیلد Age مقدار 0 و فیلد Name مقدار “” را كه مقادیر پیشفرض int و String هستند را خواهند گرفت.
نكته دوم: در تمامی ورژن های سازنده ها باید تمامی متغییر های Struct شما مقدار دهی شوند. در غیر اینصورت بازهم Compile Time Error خواهین داشت.
در نتیجه Struct شما می تواند به این شكل باشد:

کد:

public struct Teacher
{
public int Age;
public string Name;public void Print()
{
Console.WriteLine(“Name: {0},Age: {1}”,Name,Age);
}public Teacher(int age, string Name)
{
Name = name;
Age = age;
}
public Teacher(int age)
{
Age = age;
Name = “”;
}
}





نوع مطلب : آموزش، سی شارپ، 
برچسب ها : Structure، ساختار ظاهری Struct ها، سازنده ها در ساختار ها، سازنده پیشفرض در Struct ها، ساختارها در سی شارپ، سی شارپ، برنامه های رایگان سی شارپ،
لینک های مرتبط :
Yahya Taherzadeh
جمعه 22 آذر 1392
شنبه 25 شهریور 1396 03:07 ب.ظ
Its not my first time to go to see this web site,
i am browsing this website dailly and obtain fastidious facts from here every day.
یکشنبه 11 تیر 1396 10:15 ق.ظ
Wonderful blog! I found it while searching on Yahoo News.
Do you have any tips on how to get listed in Yahoo News?

I've been trying for a while but I never seem to get there!
Thanks
چهارشنبه 13 اردیبهشت 1396 12:35 ب.ظ
Hello to all, it's genuinely a nice for
me to visit this web site, it contains important Information.
چهارشنبه 13 اردیبهشت 1396 12:21 ب.ظ
This is my first time visit at here and i am genuinely pleassant to read everthing at
single place.
شنبه 2 اردیبهشت 1396 09:56 ب.ظ
I got this site from my friend who shared with me regarding this web
page and at the moment this time I am visiting this site and reading very informative articles
at this place.
یکشنبه 27 فروردین 1396 10:29 ب.ظ
Just want to say your article is as surprising.
The clarity in your post is just cool and i could assume you are an expert on this subject.
Well with your permission let me to grab your feed to keep up to date
with forthcoming post. Thanks a million and please carry on the rewarding work.
شنبه 26 فروردین 1396 11:32 ق.ظ
Very energetic post, I liked that a lot. Will there be a part 2?
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر




صفحات جانبی
آمار وبلاگ
تاییدیه پرداخت
تبلیغات
به سایت تک کدر خوش آمدید