|
این سومین قسمت آموزشی سی شارپ مقدماتی است و ارسال این پست مصادف شده با تولد من. امیدوارم زمان اجازه بده که بتونم بیشتر از این در سال جدید موثر واقع بشم.
i = 0; i = 0; for (i = 0; //initialize i to 0 تعریف متغیر در حلقه: در صورت نیاز به تعریف متغیر می تونید شمارنده حلقه را در زمان تعریف حلقه تعریف کنید. در این حالت شمارنده حلقه تعریف شده فقط در همان حلقه قابل دسترسی است. به مثال زیر توجه کنید: for (int i =0; i< 5; i++) { استفاده از کاما "," در تعریف حلقه: با استفاده از کاما می تونید بیش از یک شمارنده حلقه در تعریف حلقه داشته باشید. علاوه بر این شما می تونید در بخش عملگر نیز بیش از یک عملگر را استفاده نمایید: for (x=0, y= 0, i =0; i < 100; i++, y +=2) x = 0; float[] z = {1.0f, 2.9f, 5.6f};
+
نوشته شده در دوشنبه هجدهم دی 1385ساعت 18:0 توسط کنستانتین
|
قبل از اینکه برم سراغ مطلب جدید خواستم اینو بگم که VS2005 SP1 اومده و شما می تونید اونو از سایت مایکروسافت دانلود کنید. برای اطلاعات بیشتر و دانلود اون به آدرس زیر برید: http://msdn.microsoft.com/vstudio/support/vs2005sp1/default.aspx برای دیدن جزییات بیشتر در مورد این Service Pack به آدرس زیر برید: http://support.microsoft.com/kb/928957 حالا بریم سر اصل مطلب: وقتی یک کلاس Generic می سازید ممکنه بخواید محدودیتهایی در انواع داده مورد قبول اون کلاس ایجاد کنید. دو راه برای این کار دارید یا اینکه کلاس شما هر نوع داده ای را قبول کنه و بعد خودتون بر اساس کدهایی که می نویسید تشخیص بدید که نوع داده مجازه یا خیر. راه دوم اینه که قواعدی (Constraints) برای انواع داده مجاز برای کلاسمونو تعیین کنیم. فرض کنید کلاسی داریم بنام Person با ساختار زیر: public class Person { private string _name=""; private int _age=0; public Person(string s,int i) { _name = s; _age = i; } public string Name { get { return _name; } set { _name = value; } } public int Age { get { return _age; } set { _age = value; } } } حالا می خوایم یک کلاس Generic بسازیم که فقط نوع Person را به عنوان نوع داده ورودی قبول کنه. به این نکته باید توجه کنید که وقتی می گیم فقط کلاس Person منظورمون خود Person است و کلاسهایی که از اون ارث بری دارن. در این مثال می خوایم کلاسی بسازیم که به عنوان لیستی از Person ها باشه. بنابراین ساختار زیرو براش در نظر می گیریم: public class GListClass { } اما برای اینکه اونو محدود به کلاس Person کنیم تعریف کلاس جدیدو به شکل زیر عوض می کنیم: public class GListClass { } در اینجا نکته اول اینه که نوع داده شما در کلاس Generic شناخته شدس یعنی وقتی که یک متغیر از نوع T تعریف کنید و بعد Propery های اونو ببینید، Name و Age هم در لیست Property ها وجود دارن.
حالا اگه تو یه جایی از برنامتون یه شی از کلاس GListClass به شکل زیر بسازید در زمان کمپایل از شما Error میگیره: GListClass<int> listClass = new GListClass<int>(); علتش اینه که شما نمی تونید نوع داده کلاس GListClass را چیزی بجز Person و یا کلاسهایی که از Person به ارث رسیدن انتخاب کنید ولی کد زیر کاملا صحیح و قابل اجراست: GListClass<Person> listClass = new GListClass<Person>(); مقاله بعد احتمالا در مورد پیاده سازی یک Link List با استفاده از Generic Class ها خواهد بود یا شایدم در مورد Generic Method ها!
+
نوشته شده در یکشنبه دهم دی 1385ساعت 13:47 توسط ققنوس
|
آرایه ها : قسمت دومسلام . تو این پست میخوام یه مقدار دیگه در مورد آرایه ها توضیح بدمقبلا گفتیم که سه نوع آرایه داریم: یک بعدی . چند بعدی و دندانه ای (Jagged ) حالا اولین نوع آرایه یعنی آرایه یک بعدی ( Singel-Dimensional Arrays ) : همونطور که گفتیم تعریف آرایه به صورت زیر هست : int[] array = new int[5]; or اپراتور New برای ساختن آرایه و مقداردهی اولیه به اعضای آرایه به مقادیر پیش فرض براساس نوع آرایه بکار میرود. int[] array1 = new int[5] { 1, 3, 5, 7, 9 }; or int[] array3; SomeType[] array4 = new SomeType[10]; نتیجه تعریف یک آرایه به نوع تعریف شده آرایه بستگی دارد که آیا Value type است یا Refrence Type. به عنوان مثال در بالا اگر SomeTYpe از نوع Value Type باشد حاصل این عبارت آرایه ای شامل 10 نمونه از نوع SomeTYpe است. اگر از نوع Refrence Type باشد آرایه شامل 10 عنصر خواهد بود که هرکدام به Null ارجاع خواهند داد. فکر کنم توضیح مختصری در مورد Value Type , Refrence Type ها بد نباشه: سه گروه type در #c تعریف شده : Value Type , Refrence Type , Pointer Type متغیر هایی از نوع Value Type , اطلاعات و داده ها را ذخیره میکنند در حالیکه متغیر های از نوع Refrence مراجع به داده ها و در واقع آدرس محل داده در حافظه را ذخیره میکنند . pointer ها فقط در حالت Unsafe قابل استفاده هستند. امکان تبدیل متغیری از نوع Value به متغیری از نوع Refrence و برگشت دوباره به Value وجود دارد ( با استفاده از Boxing & Unboxing ) اما برعکس نه! نوع دوم آرایه ها , آرایه های چند بعدی هستند : ( Multidimentional Arrays ) آرایه ها میتوانند بیش از یک بعد داشته باشند مثلا: int[,] array = new int[4, 2]; میتوانید مقداردهی آرایه را در همان زما« معرفی آن انجام دهید به صورت زیر : int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 },{ 7, 8 } }; int[,] array5; مقداردهی به یک عضو از اعضای آرایه نیز به صورت زیر است : array5[2, 1] = 25; توضیح آرایه های دندانه ای میمونه برای پست بعدی . موفق باشید .
+
نوشته شده در شنبه نهم دی 1385ساعت 1:35 توسط آتاناز
|
|


