Reference كپی در سی شارپ

اجازه بدین كمی بیشتر در مورد این خط كد توضیح بدیم:
1
2
Person yourPerson = myPerson;


در حقیقت در كدی كه نوشته شده یك كپی از یك شیء به نام myPerson ایجاد شده و نام آن را yourPerson نهاده ایم. دقت كنین كه در سی شارپ رفتار پیش فرض كپی از اشیاء reference copy است. همانطور كه در آخرین تصویر پست قبلی دیدیم , وقتی من از myPerson یك Reference copy تهیه می كنم در حقیقت فقط آدرس حافظه myPerson رو در متغییر yourPerson قرار می دهم و نه خود شیء را. البته این یك نوع از انواع كپی ها (نوع پیشفرض) می باشد در پست های آینده در مورد انواع كپی صحبت خواهیم كرد.

Place Holders

1
2
3
4
5
6
7
Person p = new Person();
p.Name = "Ali";
p.Age = 20;
 
Console.WriteLine("MyName is <b>{0}</b> and I 'm <b>{1}</b> years old.",<b>p.Name</b>,<b>p.Age</b>);


اگر به كدی كه در خط بالا نوشته ایم دقت كنین یك سری عدد داخل متن رشته ای كه در متد WriteLine استفاده شده است می بینیند. اعداد در داخل دو علامت {} قرار گرفته اند و از 0 تا n می باشند. در واقع این اعداد جاینگهدار (PlaceHolder)هایی هستند كه باید با مقادیر متغییر هایی كه به ترتیب بعد از متن رشته ای قرار می گیرند جایگزین شوند. در واقع خروجی كد بالا متن زیر خواهد بود. كه متغییر p.Name یا همان "Ali" جایگزین {0} شده و مقدار متغییر p.Age كه 20 بود نیز جایگزین {1} شده است.
کد HTML:
 MyName is Ali and I 'm 20 years old.
متد ها در سی شارپ - Methods in CSharp
همانطور كه در ابتدای صحبتمان در مورد كلاس ها صحبت كردیم در واقع رفتار های كلاس ها (یا همان اشیاء شان) از طریق متد ها پیاده سازی می گردد. به این معنی كه اگر كلاس Person توانمندی چاپ اطلاعاتش را نیاز داشته باشد باید یك متد برای این كار ایجاد كند.
برای ایجاد یك متد در سی شارپ كافی است از Syntax زیر استفاده كنیم:
1
2
3
4
5
AccessModifier returnType MethodName([parameter type parameter name])
{
}


در مورد Access Modifier ها در پست های بعدی به تفضیل صحبت خواهیم كرد اما فعلا ما از public یا همان عمومی استفاده خواهیم كرد.

در صورتیكه متد شما باید مقدار برگرداند (شبیه function ها در vb) باید جنس متغییر خروجی را مشخص كنیم. مثلا اگر متد شما دو عدد رو با هم جمع می زند و یك حاصل رو در غالب یك عدد بر می گرداند نوع آن را int تعریف می كنیم. اگر متد شما خروجی ندارد و فقط یك سری كار را انجام می دهد (subroutine ها در vb) نوع خروجی آن را void تعریف می كنیم.

MethodName كه اسم متد مورد نظر شماست.

در صورتیكه متد شما دارای ورودی (parameter) است كافیه كه به ترتیب نوع داده ای پارامتر و سپس نام آن را تایپ می كنیم. اگر تعداد پارامتر ها بیش از یكی است از , برای جدا كردن آن ها استفاده می كنیم.

دقت كنین كه هر متد دارای یك block of code برای خودش می باشد. پس حتما {} رو قرار می دهیم و كد هایی كه نیاز داریم را ما بین این دو علامت می نویسیم.

! محل قرار گیری متد ها در block of code كلاس هاست.

حالا به متد ShowInfo كه برای نمایش اطلاعات اشخاص در داخل كلاس Person می نویسم دقت كنین:
1
2
3
4
5
6
public void ShowInfo()
{
Console.WriteLine("Name: {0},Age: {1}",Name,Age);
}


برای استفاده از متد ها هم كافیه كه بعد از اسم شیء (object) نام متد را به همراه پرانتز استفاده كنیم. دقت كنین كه اگر متد شما دارای ورودی است مقادیر ورودی داخل پرانتز قرار می گیرد.
1
2
3
4
5
6
Person p = new Person();
p.Name = "ali";
p.age = 20;
p.ShowInfo();


یك مثال هم از متدی كه دو عدد را گرفته و حاصل جمعشان را بر میگرداند:
1
2
3
4
5
6
7
8
9
publc class Calc
{
public int Add(int num1,int num2)
{
return num1 + num2;
}
}


و استفاده از آن:

1
2
3
4
5
6
Calc c= new Calc();
int result = c.Add(10,50);
Console.WriteLine("Result of {0} + {1} is: {2}",10,50,result);

در مورد متد ها در پست های بعدی بیشتر صحبت خواهیم كرد.