الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Convert an ArrayList into an array

مغلق
بدأه Ahmed H. Alawady في 23 مارس 2006 · 9 رد · 964 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

عند تحويل [ ]object الناتجة من ArrayList إلى نوع آخر مثل [ ]int أو [ ]string

يتم عمله كما في المثال التالي :

// Convert an ArrayList into an array. 
using System; 
using System.Collections; 
public class ArrayListToArray { 
  public static void Main() { 
    ArrayList al = new ArrayList(); 
    // Add elements to the array list. 
    al.Add(1); 
    al.Add(2); 
    al.Add(3); 
    al.Add(4); 
    Console.Write("Contents: "); 
    foreach(int i in al) 
      Console.Write(i + " "); 
    Console.WriteLine(); 
    // Get the array. 
    int[] ia = (int[]) al.ToArray(typeof(int)); 
    int sum = 0; 
    // sum the array 
    for(int i=0; i<ia.Length; i++) 
      sum += ia; 
    Console.WriteLine("Sum is: " + sum); 
  } 
}

ArrayListToArray.PNG

وتتم هذه الطريقة لأنه بدون إستخدام هذا الأسلوب

    int[] ia = (int[]) al.ToArray(typeof(int));

وإستخدامها بطريقة عادية ، مما ينتج خطأ في الكود

    int[] ia = (int[]) al.ToArray();

أو

    int[] ia = al.ToArray();

يتم ظهور خطأ وهو

"Cannot convert type 'object[]' to 'int[]'"

تم تعديل هذه المشاركة بواسطة Ahmed H. Alawady في 23 مارس 2006 في 12:27

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#2

لماذا لا تستخدم System.Collections.Generics؟

using System;
using System.Collections.Generic;
public class ArrayListToArray {
 public static void Main() {
   List<Integer> al = new List<Integer>();
   // Add elements to the array list.
   al.Add(1);
   al.Add(2);
   al.Add(3);
   al.Add(4);
   Console.Write("Contents: ");
   foreach(int i in al)
     Console.Write(i + " ");
   Console.WriteLine();
   // Get the array.
   int[] ia =  al.ToArray();
   int sum = 0;
   // sum the array
   for(int i=0; i<ia.Length; i++)
     sum += ia;
   Console.WriteLine("Sum is: " + sum);
 }
}

أرجو أن يعمل المثال!

#3

السلام عليكم ورحمة الله وبركاته

جزاك الله خيرا على الرد ، فلو تخيل أن كل عضو كتب فكرة أعجبتة كما فعلت ورد عليه عضو آخر يتنافش مع في نفس الموضوع فكم من الإستفادة التي تنهمر على كلا العضوين والأعضاء الآخرين الذين يقرأون المقالة فجزاك الله خيرا

بالنسبة للموضوع :

ما لافرق بين كل من

ArrayList al = new ArrayList();

وبين

List<Integer> al = new List<Integer>();

فإن السطر التالي يعطي خطأ ،و هو كما ذكرت في المقالة الخاصة بي وهي تتبع إلى ArrayList

 int[] ia = al.ToArray();

ففي حالة التشابة ( وذلك بناءا على ردك الذي سوف أنتظرة) فإن الكود الذي كتبة سوف ينتج خطأ أيضا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#4

الرجاء وضع الخطأ في المرة القادمة!

أعتقد أن الخطأ هنا:

Integer[] ia = al.ToArray();
#5
حسام الملحم أبومازن كتب:
الرجاء وضع الخطأ في المرة القادمة!

أعتقد أن الخطأ هنا:

Integer[] ia = al.ToArray();

أخي العزيز لم أفهم قصدك

وهل يوجد إختلاف بين الشكلين الذي سالتك عليهم أم لا ؟

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#6

الفرق:

1- List هي فئة من الحزمة System.Collections.Generic، و ArrayList من الحزمة System.Collections

2- كل من ArrayList و List يتصفان بأنهما IList والتي توجد في الحزمة System.Collection. يعني جميعهم مجموعات.

3- تعمل List كما تعمل ArrayList يعني نفس الفئة تقريبا. Copy-Paste..

4- الفرق أن List من الجنسيات، أو Generic!! يعني تستطيع أن تجعلها قائمة خاصة للأعداد، أو الكلمات أو أي شيء خاص!

ألم ينجح التصحيح الذي ذكرته؟

Integer[] array=al.toArray();
#7

أخي العزيز لا يوجد System.Colletions.Generic

أين أجد هذا NameSpace

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#8

الـ Generics مدعومه فقط في سي شارب 2.

لو تم استخدام الـ Generics , فلن يوجد أى أخطاء. فكما كتبها الأخ أبو مازن سابقا :

List<int> aL = new List<int>();
aL.AddRange(new int[] {1,2,3,4});
int[] myInts = aL.ToArray();

ToArray الخاصه بـ aL هنا ليس لها شكل يأخذ Type , وهذا منطقي , كما أنها ترجع []int دائما وليس مصفوفة من الـ objects ,, وهذا فائدة الـ Generics , فلا ينبغي علينا اخباره بنوع myInts عندما نستخدم ToArray لأننا أخبرناه بذلك ونحن ننشئ الـ aL في أول سطر بأنها لن تحتوي الا على أعداد صحيحه int.

أيضا يمكن كتابة الكود التالي , وسيعمل اذا كنا نستخدم <List<int :

int myInt = aL[0];

ولكن في سي شارب 1 , لا طريقه الا استخدام ToArray التي تأخذ الـ Type كما فعلت في مثالك.

تم تعديل هذه المشاركة بواسطة معتز شمس في 25 مارس 2006 في 16:14

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#9

جزاك الله خيرا أخ معتز ، وجزى الله خيرا الأخ أبو مازن

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#10

السلام عليكم ... بعد معانات حليتها :wacko:

اذا اردت تحويل

ArrayList al = new ArrayList();

الى اي نوع تريده .... فاليك هذا الرابط

http://www.blackwasp.co.uk/CSharpArrayList.aspx

-----------------

كذلك توجد طريقة ....

temp = System.Convert.ToInt32(al [j]);

والسلامممممممممممممممممممممممم

هذا الموضوع مغلق.

مواضيع مشابهة