واضح آرشیو وب فارسی:سایت ریسک: View Full Version : کار با آرایه های و کالکشن ها در #c rtech19th September 2008, 12:21 PMانتقال آیتمهای یک آرایه از اعداد به یک لیست باکس int[] numbers = { 12, 23, 34, 45, 56, 67 }; Object[] oNumbers = new Object[numbers.Length]; numbers.CopyTo(oNumbers, 0); listBox1.Items.AddRange(oNumbers); rtech19th September 2008, 12:22 PMروشهای Initialize کردن انواع آرایه ها // Single-dimensional array (numbers). int[] n1 = new int[4] {2, 4, 6, 8}; int[] n2 = new int[] {2, 4, 6, 8}; int[] n3 = {2, 4, 6, 8}; // Single-dimensional array (strings). string[] s1 = new string[3] {"John", "Paul", "Mary"}; string[] s2 = new string[] {"John", "Paul", "Mary"}; string[] s3 = {"John", "Paul", "Mary"}; // Multidimensional array. int[,] n4 = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; int[,] n5 = new int[,] { {1, 2}, {3, 4}, {5, 6} }; int[,] n6 = { {1, 2}, {3, 4}, {5, 6} }; // Jagged array. int[][] n7 = new int[2][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} }; int[][] n8 = new int[][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} }; int[][] n9 = { new int[] {2,4,6}, new int[] {1,3,5,7,9} }; rtech19th September 2008, 12:22 PMبرعکس کردن ترتیب آیتمهای یک آرایه int[] someArray = new int[5] { 1, 2, 3, 4, 5 }; Array.Reverse(someArray); rtech19th September 2008, 12:22 PMمرتب سازی آیتمهای یک ارایه int[] array ={ 4, 10, 17, 5, 1 }; Array.Sort(array); rtech19th September 2008, 12:23 PMانتقال آیتمهای یک کالکشن به یک آرایه ArrayList list = new ArrayList(); list.Add(new Employee()); list.Add("farzaneh"); list.Add(1); object[] array = new object [list.Count]; list.CopyTo(array, 0); rtech19th September 2008, 12:23 PMاستفاده از متد Find در Generic List با فرض اينكه lstTerm ليستي از كلاس Term است مي خواهيم ترمي را پيدا كنيم كه Id آن برابر با 88-87 باشد. lstTerms.Find(delegate(Term t) { return t.Id = "87-88"; }); rtech19th September 2008, 12:24 PMساختن یک لیست ژنریک از اشیاء با فرض داشتن کلاسی مانند : public class Person { public Person() { } public Person(string _firstName, string _lastName) { this.firstName = _firstName; this.lastName = _lastName; } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } } میتونیم بنویسیم : List<Person> persons = new List<Person>(); persons.Add(new Person("ali", "ahmadi"); persons.Add(new Person("maryam", "hosseini"); rtech19th September 2008, 12:25 PMکالکشنهای معمولی در مقابل کالکشنهای ژنریک در این مقایسه سعی شده مطالب بصورت خلاصه و مفید مطرح بشه. جهت اطلاعات دقیقتر به مستندات دات نت فریمورک مراجعه نمایید. همانطور که میدونید ما دو مدل کالکشن داریم : کالکشنهای معمولی (مثل ArrayList) کالکشنهای ژنریک (مثل <>List) در مورد کالکشنهای ساده : چون توسعه دهندگان دات نت نمیدونستند که استفاده کنندگان قراره چه چیزی رو درون یک کالکشن بریزند (در واقع هرچیزی ممکنه : از یک نمونه person گرفته تا یک عدد یا رشته) اومدن و گفتن کالکشنهای ما آیتمهایی از نوع Object قبول میکنه در نتیجه برنامه نویسان بعدی میتونستند هرچیزی رو در آن نگهداری کنند. این داستان دو مشکل عمده دارد : 1- Boxing و unBoxing : یعنی شما زمانی که یک آیتم را به لیست اضافه میکنید باید تبدیل به یک Object شه (boxing) و زمانی که اون رو از لیست میخونید باید اون رو به تایپ مورد نظر خودتون cast کنید(unboxing) که این موضوع پر هزینه ای است. 2- Type safety وجود ندارد. یعنی شما هرچیزی رو میتونید درون یک arrayList بریزید بدون آنکه کامپایلر به شما هشدار دهد و گاه با یک اشتباه کوچیک برنامه شما در زمان اجرا crach میکند. ArrayList list = new ArrayList(); list.Add(new Person()); list.Add("new Person()"); // its ok at compile time! list.Add(new Person()); و اما در کالکشنهای ژنریک (که با دات نت 2.0 آغاز شدند) شما در زمان کد نویسی مشخص میکنید که با چه تایپی میخواهید کار کنید. این موضوع دو حسن کلی دارد : 1- عملیات boxing و unboxing حذف و لذا performace بیشتر میشود 2- عملیات افزودن آیتم به لیست safe میشود چون اگر چیزی غیر از آنچه مشخص شده را درون لیست بریزید در کامپایل تایم به error برمیخورید. List<Person> persons = new List<Person>(); persons.Add(new Person()); persons.Add("new Person()"); // error in compile time persons.Add(new Person()); maryam khaksar2nd July 2009, 06:36 PMسلام برنامه اسکرین سیور با زبان ++c را می خواهم .اگه میشه کمکم کنید.متشکرم سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 691]