آموزش سیشارپ C# – بخش ۴۳
- مقدمه
آرایهها، یک مفهوم بسیار مهم در برنامهنویسی میباشند؛ بدین صورت که همانند یک مجموعه، مجموعهای از اطلاعات را در درون خود نگهداری میکنند. اما آیا به یکی از مشکلات آن دقت کردهاید؟ اگر هیچ وقت ندانیم که سایز آرایهی ما چقدر باید باشد، چه کار باید انجام دهیم؟ شاید بگویید که در اول اجرای برنامه از کاربر سوال کنیم، اما اگر خود کاربر حتی نداند چه تعدادی آیتم دارد چه؟ مثلاً فرض کنید که یک برنامهی دفترچه تلفن نوشتهاید؛ نه کاربر و نه شما میدانید که چه تعداد مخاطبین میخواهید اضافه کنید و قطعاً در آینده و روز به روز افزایش پیدا خواهد کرد.
پس باید به مفهومی به نام List<> مراجعه کنیم. یکی از مشکلاتی که توسط List<> حل میشود، همین مشکل است، پس با ما باشید.
- استفاده از List<>
همانطور که از نامش پیداست، مفهومی که با آن سر و کار داریم یک «لیست» است؛ یعنی زمانی از آن استفاده میکنیم که بخواهیم آیتم جدیدی به آن اضافه، آیتمی را از آن حذف و یا در آن جستجو کنیم؛ یا مثلاً اطلاعات وارد شده را Sort (مرتب) کنیم و …
برای مثال، شما معلمی هستید که در کلاس خود ۱۰ دانشآموز حضور دارند. شما میتوانید لیستی از دانشآموزان خود درست کنید که اسامی آنها را ذخیره کرده، اگر آنها را بر اساس حروف الفبا مرتب کنید، دانشآموز جدیدی را اضافه کنید و یا دانشآموزشی را از آن حذف نمایید. اگر از یک آرایه معمولی استفاده کنید، میدانید که انجام کارهای فوق بسیار سخت است.
اکنون Visual Studio را اجرا نموده و یک پروژه جدید ایجاد نمایید. یک Button و Listbox اضافه کنید. بر روی Button خود دابل-کلیک کنید تا وارد بخش کدنویسی مربوطه شوید. به کدهای آماده (خصوصاً کدهای بالا) دقت کنید. الان شما کدهایی را میبینید که با Using شروع میشوند.
Using مربوط به List<>، همانی هست که کد آن بدین شکل است: System.Collections.Generic
اگر نمیتوانید آن را ببینید، خودتان آن را بصورت دستی اضافه کنید.
نحوه نعریف یک لیست در سیشارپ بهشکل زیر میباشد:
List<string> students = new List<string>();
ابتدا با کلمه کلیدی List شروع کرده، در داخل علامتهای مربوطه نوع لیست خودتان را انتخاب میکنید و پس از ایجاد یک فاصله (Space)، نام متغیر را تعیین میکنید و در نهایت، آن را new میکنید. کدهای شما میبایست که به شکل زیر شده باشند:
اکنون زمان اضافه کردن اطلاعات به لیست خود میباشید. برای اضافه کردن اطلاعات به لیست خود، میتوانید پس از ذکر نام لیست خود که انتخاب کردهاید، از متد Add استفاده نمایید. به کدهای زیر دقت کنید:
students.Add(“Jenny”);
students.Add(“Peter”);
students.Add(“Mary Jane”);
کدهای شما اکنون بدین شکل خواهند بود:
برای دسترسی به لیست خود نیز میتوانید از حلقه foreach استفاده کنید. کد زیر را اضافه کنید:
foreach (string child in students)
{
listBox1.Items.Add(child);
}
بدین ترتیب که ما با استفاده از این حلقه در این لیست در حال گردش هستیم. اگر هم میخواهید از لحقه معمولی For استفاده کنید، میتوانید از کد زیر استفاده نمایید:
for (int = 0; i <students.Count; i++)
{
listBox1.Items.Add(students[i]);
}
دقت کنید که Count در student.Count تعداد آیتمهای موجود در لیست را برمیگرداند.
اما پیشنهاد میشود که در لیستها از حلقههای Foreach استفاده کنید.
کدهای خودتان را اجرا کنید؛ نتیجه را خواهید دید!
مرتبسازی لیست
یکی از مهمترین کارهایی که میتوان در List<> انجام داد، مرتبسازی آن میباشد. شما میتوانید با استفاده از متد Sort()، اقدام به مرتبسازی مقادیر موجود در داخل لیست اقدام نمایید. به کد زیر دقت کنید:
students.Sort();
اگر کد زیر را پیش از نمایش آیتمها در Listbox اضافه کنید، خواهید دید که نتیجهی حاصل، یک لیست مرتبشده بر اساس حروف الفبا میباشد. اگر نوع لیست را از نوع عدد میگرفتید، نتیجهی حاصل، بر اساس ترتیب اعداد میبود.
برای اینکه لیست خود برعکس کنید، میتوانید از متد Reverse() استفاده کنید. به کد زیر دقت کنید:
stundents.Reverse();
حذف مقدار از List<>
شما میتوانید از دو روش مقادیر موجود در لیست را حذف کنید؛ یا اینکه مقدار مورد نظر را میدانید و آن را به تابع میگویید تا آن را حذف کند، و یا یک رنجی از میخواهید حذف کنید که باید شماره محل قرار گرفتن آن را به متد پاس دهید. این کارها توسط دو متد Remove و RemoveRange انجام میشود. به کدهای زیر دقت کنید:
student.Remove(“Peter”);
این کد، آیتم مربوط به Peter را حذف میکند.
student.RemoveRange(0, 2);
این کد، اولین مقدار (که در اینجا صفر است) محل شروع حذف کردن را به شما میگوید و مقدار دوم (که ۲ میباشد) تعداد خانههای بعد از اولین مقدار (که اینجا صفر است) را که میخواهید حذف کنید را از شما میگیرد.
جهت دریافت این بخش آموزشی بصورت یک فایل PDF، اینجا را کلیک کنید.
سلام
پی دی اف این شماره و شماره قبل رو نذاشتید
سعی کنید توی پی دی اف گذاشتن منظم تر عمل کنید
چند نفر رو می شناسم که دارن مرتب این طور موزشها رو دانلود می کنند برای زمان پروژه نهایی شون
موفق باشد
سلام دوست عزیزم،
من تمامی سعیام را در قرار دادن نسخههای PDF آموزشها هستم، اما اصل آموزشها میبایست که از طریق وبسایت دنبال گردد. سعی میکنم بهزودی PDFها را قرار دهم، فعلاً در حال تهیه آموزشها هستم که کمی از تاخیری که قبلاً پیش آمد جبران کنم.
موفق باشید!
جناب موسوی عزیز بینهایت ممنونم این اموزش ها عالی هستند واقعا معرکه اند مدت ها بود دنبال همچین چیزی می گشتم که مثل ای اموزش ن با زبان شیوا و اسانی توضیح داده شده باشد تا ان را متوجه شوم کیفیت کار عالی است من دانشجوی ای تی هستم و واقعا برای من مفید است برایتان دعای خیر می کنم و امیدوارم در تمام مراحل زندگیتان موفق باشید . بی صبرانه منتظر قسمت های بعدی و فایل پی دی اف هستم خسته نباشید خدا قوت
سلام دوست عزیزم،
خیلی خوشحالم که رضایت کافی از کیفیت مطالب دارید؛ قطعاً نظرات شما و دیگر دوستان تنها عاملی است که باعث دلخوشی من میشوند.
با تشکر.
سلام
کاش این آموزش ها رو دسته بندی میکردین.
مثلاً دسته ی آموزش سی شارپ دلفی و …
سلام ممنون بابت اموزش مفیدتون اگه امکان داره درمورد مرتب سازی وحذف از لیست یکم بیشتر توضیح بدید منظورم اینه که کد حذف را کجا بنویسم ممنون
List people = new List(); class Person { public string Name { get; set; }
public string Email
{
get;
set;
}
}
private void button1_Click(object sender, System.EventArgs e)
{
Person p = new Person();
p.Name = textBox1.Text;
p.Email = textBox2.Text;
p.phone = textBox3.Text;
p.Address = textBox4.text;
people.Add(p);
people.Add(p);
people.Add(p);
}
الان people سه تا object داره. بخوایم این اطلاعات رو از people بخونیم و در لیست باکس بریزیم( یا در dataGridView)، چه کدی باید بنویسیم؟
بسیار عالی بود متشکرم
متدی هست که برای استفاده از طول list ازش استفاده کرد مثل ()Length. در استفاده از آرایه ها؟
سلام من مشکل mahba رو دارم
اصلا در list box نشون نمیده
چرا؟؟؟
llk,k