آموزش سی شارپ قسمت 64: Collection ها و List ها
آرایه ها برای نگهداری تعداد زیادی از مقادیر با یک نام مفید هستند. Collection ها نیز همین کار را انجام می دهند. #C حاوی گروهی داخلی از کلاسها میباشد که مخصوص collection ها هستند. این کلاسها بسیار پرکاربرد هستند
در آرایه داده هایی از یک نوع را ذخیره می کنیم. یک آرایه که حاوی اعداد است نمی تواند رشته ها را در خود جای دهد و یا بالعکس. برای مثال نمی توانیم حالتهای زیر را داشته باشیم:
arrayPos[0] = 1;
arrayPos[1] = "two";
اولین جایگاه یک عدد را در خود نگهمی دارد و دومین جایگاه یک متن. در #C نمی توانید اینچنین حالتی را داشته باشید. اما میتوانیم هر دو نوع داده را در یک collection بنام Hashtable داشته باشیم. با Collection ها همچنین میتوانیم داده ها را در یک List مرتب کنیم یا آیتمها را حذف و یا اضافه نماییم.
در اینجا با یک Collection class بنام Listst شروع می کنیم.
Lists در #C
هنگامی که نیاز داریم آیتمها را به List اضافه یا از آن کم و یا مربت کنیم از Collection استفاده می کنیم. بعنوان مثال فرض کنید معلمی هستید با کلاسی تشکیل شده از 10 دانش آموزش .باید لیستی از اسامی دانش آموزان داشته باشید و بتوانید دانش آموزان جدید را به آن اضافه و دانش آموزانی را که کلاس را ترک می کنند از لیست حذف و اسامی را بترتیب حروف الفبا مرتب کنید. اگر بخواهید از آرایه ها استفاده کنید ایجاد یک چنین لیستی کار سختی خواهد بود.
بنابراین یک پروژه جدید ایجاد کنید. یک دکمه و یک List box به فرم اضافه کنید. بر روی دکمه دابل کلیک کنید تا به پنجره کد دسترسی پیدا کنید. به بالای کدها نگاه کنید. مانند تصویر زیر لیستی از عبارتهای استفاده شده را خواهید دید. (خط 1 تا 7):
عبارت استفاده ای را که برای List نیاز داریم System.Collections.Generics نام دارد. اگر این عبارت را در لیست عبارتهای استفاده شده نیمی بینید خود آن را اضافه نمایید.
برای تنظیم یک لیست بر روی دکمه دابل کلیک کنید تا به کد آن دسترسی پیدا کنید.
خط زیر را به کد اضافه کنید:
List<string> students = new List<string>();
در کد بالا با کلمه List شروع کرده ایم. سپس از پرانتزهای شکسته < > استفاده می کنیم. در داخل پرانتزهای شکسته یک متغیر یا نوع متغیر را قرار می دهیم. در اینجا ما string را قرار داده ایم . در اینجا با این کد به #C میگوییم که متغیر متنی را در List نگهدارد. لیست ما students نام دارد. بعد از علامت مساوی = از کلمه کلیدی new استفاده کرده ایم. سپس مجددا بخش <List<string را آورده ایم. اینبار در انتهای عبارت یک جف پرانتز ( ) قرار میدهیم که به #C میگوییم که یک لیست جدید از مقادیر متنی را ایجاد کند.
کد بصورت زیر خواهد بود:
بعد از تعریف لیست باید آن را با داده پر کنیم. سه خط زیر را به کد اضافه کنید.
students.Add("Jenny");
students.Add("Peter");
students.Add("Mary Jane");
کد شما باید بصوری زیر باشد:
بعد از تایپ نام List (در اینجا students) سی شارپ یک لیست IntelliSense را نمایش میدهد.
این لیستی از تمام Methodها و خصوصیتهاییست که List دازد. گزینه ای که برای اضافه کردن آیتمها به List نیاز داریم ( )Add نام دارد. در بین پرانتزهای Add داده ای را که میخواهیم به List اضافه کنیم قرار می دهیم.
students.Add( "Jenny" );
برای هریک از آیتمهای Collection یک خط جدید برای اضافه کردن آیتم نیاز داریم.
برای دسترسی به آیتمهای List آز حلقه foreach استفاده می کنیم. این حلقه را به دکمه خود اضافه کنید:
foreach (string child in students)
{
listBox1.Items.Add( child );
}
به این ترتیب تمام آیتمها را در حلقه قرار میدهیم و سپس آنها را به List box اضافه می کنیم.
می توانیم از یک حلقه for نیز استفاده کنیم:
for (int i = 0; i < students.Count; i++)
{
listBox1.Items.Add( students[i] );
}
توجه داشته باشید که شرط پایان حلقه students.Count است. Count خصوصیتی از List است که تعداد آیتمهای List را نشان می دهد.
در حلقه for مانند یک آرایه معمولی از کروشه [ ] به همراه index number استفاده می کنیم.
اما اگر بخواهیم یک collection را در حلقه قرار دهیم کد بالا انتخاب مناسبی نیست. انتخاب بهتر استفاده از حلقه foreach آست.
یک حلقه foreach هنگامی که دیگر آیتمی در آرایه یا collection باقی نمانده باشد خاتمه می یابد. بر خلاف حلقه for احتیاجی نیست به #C بگوییم که چه زمان آیتمها تمام می شود. در یک حلقه foreach سی شارپ خود میداند که چه وقت باید حلقه را به پایان برساند.
میتوانیم هر زمانی آیتم جدیدی به لیست اضافه کنیم. در زیر مثالی برای تمرین میاوریم:
دانش آموز چهارم ( Azhar ) را به لیست اضافه میکنیم و آن را در List box نمایش می دهیم.
کد جدید را به دکمه اضافه کنید. برنامه را اجرا و دکمه را کلیک کنید. فرم باید بصورت زیر باشد:
مرتب کردن لیست در #C
مرتب کردن یک لیست در #C عملیات پیچیده ای نیست. برای این کار از Sort Method استفاده می کنیم.
students.Sort();
در اینجا کدهایی برای تمرین آورده ایم. خطهای جدید باید به انتهای کد اضافه شوند:
students.Sort();
listBox1.Items.Add("=================");
foreach (string child in students)
{
listBox1.Items.Add(child);
}
برنامه را اجرا و امتحان کنید.بعد از کلیک کردن دکمه Listbox بصورت زیر باید باشد:
همانطور که میبینید آیتمها بترتیب حروف الفبا از A تا Z مرتب می شوند. میتوانید عملیات مرتب کردن را بلعکس از Z تا A انجام دهید. یکی از راههای انجام این عملیات استفاده از Reverse method متد است.
students.Reverse( );
کدنویسی اضافه ای احتیاج نیست.
حذف آیتمها از لیست
برای حذف آیتمها از لیست میتوانیم از Remove method یا RemoveRange method
Remove method آیتمهای تکی را از لیست حذف میکند. بصورت زیر از آن استفاده می کنیم:
students.Remove( "Peter" );
در بین پرانتز های Remove آیتمی را که میخواهیم حذف کنیم قرار می دهیم
اگر بخواهیم بیشتر از یک آیتم را حذف کنیم از RemoveRange استفاده می کنیم. بصورت زیر:
students.RemoveRange( 0, 2 );
اولین عدد در بین پرانتزهای RemoveRange آیتمی است که عمل حذف باید از آن شروع شود. عدد دوم تعداد آیتمهایی است که باید حذف شود.
برای تمرین کدهای زیر را به دکمه اضافه کنید:
students.RemoveRange(0, 2);
listBox1.Items.Add("=================");
foreach (string child in students)
{
listBox1.Items.Add(child);
}
تا اینجا کار با لیستها کافیست . لیستها کاربردهای زیادی در #C دارند. بررسی بیشتر را به عهده خودتان میگذاریم.
در تمرین بعدی به بررسی کالکشن Hashtable خواهیم پرداخت
این فصل در یک نگاه:
آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…
توضیحات کلی مجموعه: آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…این فصل در یک نگاه:
در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…
توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…این فصل در یک نگاه:
در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…
دوره صفر تا صد آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…این فصل در یک نگاه:
توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …
به نام خدا بازیسازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازیساز حرفهای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…این فصل در یک نگاه:
اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…
مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…