Jagged arrays آرایه ای از آرایه ها است و هما ن طور
که ذکر شد لزومی ندارد که هر ردیف آن با ردیف بعدی هم طول باشد .
هنگام تعریف این نوع آرایه شما تعداد ردیف ها را مشخص می نمایید. هر ردیف
یک آرایه را نگه داری می کند. در اینجا هر آرایه باید تعریف شود.
روش تعریف Jagged array به صورت زیر است
در اینجا
تعداد براکت ها بیانگر ابعاد آرایه می باشد. برای مثال آرایه ی زیر دو
بعدی است :
و
برای مثال برای دسترسی به پنجمین عنصر آرایه ی سوم به صورت زیر عمل می
شود :
مثال : یک
برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آن را
درابتدا ex21 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :
namespace ex21
{
class Class1
{
[STAThread]
static void
Main(string[] args)
{
const int rows = 4;
// declare
the jagged array as 4 rows high
int[][] jaggedArray = new
int[rows][];
// the first row has 5 elements
jaggedArray[0]
= new int[5];
// a row with 2 elements
jaggedArray[1] = new
int[2];
// a row with 3 elements
jaggedArray[2] = new
int[3];
// the last row has 5 elements
jaggedArray[3] = new
int[5];
// Fill some (but not all) elements of the rows
jaggedArray[0][3] = 15;
jaggedArray[1][1] = 12;
jaggedArray[2][1] = 9;
jaggedArray[2][2] = 99;
jaggedArray[3][0] = 10;
jaggedArray[3][1] = 11;
jaggedArray[3][2] = 12;
jaggedArray[3][3] = 13;
jaggedArray[3][4] = 14;
for (int i = 0;i < 5; i++)
{
Console.WriteLine(“jaggedArray[0][{0}] = {1}”,
i,jaggedArray[0][i]);
}
for (int i = 0;i < 2; i++)
{
Console.WriteLine(“jaggedArray[1][{0}] = {1}”,
i,jaggedArray[1][i]);
}
for (int i = 0;i < 3; i++)
{
Console.WriteLine(“jaggedArray[2][{0}] = {1}”,
i,jaggedArray[2][i]);
}
for (int i = 0;i < 5; i++)
{
Console.WriteLine(“jaggedArray[3][{0}] = {1}”,
i,jaggedArray[3][i]);
}
Console.ReadLine();
}
}
}
توضیحاتی در مورد کد فوق :
هنگام کار با آرایه های rectangular برای درسترسی به اعضا به
صورت زیر عمل می شد :
اما در این جا بدین صورت است :
استفاده
از System.Array :
دات نت فریم ورک کلاسی را معرفی کرده است به نام
Array. توسط این کلاس کار با آرایه ها و اعمال روی آن ها برای مثال
سورت کردن و غیره به شدت ساده می شود .
مثال : یک برنامه ی سی
شارپ جدید console را در VS.NET باز کنید و نام آن را درابتدا ex22
انتخاب نمایید. سپس کد زیر را درون آن بنویسید :
namespace ex22
{
class Class1
{
public static void
PrintMyArray(object[] theArray)
{
foreach (object obj in
theArray)
{
Console.WriteLine(“Value: {0}”, obj);
}
Console.WriteLine(“\n”);
}
[STAThread]
static
void Main(string[] args)
{
String[] myArray = {
“Who”,
“is”, “John”, “Galt”
};
PrintMyArray(myArray);
Array.Reverse(myArray);
PrintMyArray(myArray);
String[]
myOtherArray = {
“We”, “Hold”, “These”, “Truths”,
“To”,
“Be”, “Self”, “Evident” };
PrintMyArray(myOtherArray);
Array.Sort(myOtherArray);
PrintMyArray(myOtherArray);
Console.ReadLine() ;
}
}
}
توضیحاتی در مورد کد فوق :
از دو متد Sort و Reverse در
این جا برای سورت کردن و نمایش آرایه به ترتیب معکوس (از انتها به
ابتدا) استفاده گردیده است.
تعریف آرایه های دینامیک در سی
شارپ :
یکی از مشکلاتی که با آرایه های معمول وجود دارد این است که
قبل از هر کاری باید طول آْ ن ها را مشخص کرد. گاهی از اوقات ما
دقیقا نمی دانیم برنامه چه تعداد عضو را دریافت می کند تا آرایه ای از
پیش تعریف شده با همان تعداد عضو ایجاد کنیم. برای حل این مشکل از کلاس
ArrayList تعریف شده در دات نت فریم ورک می توان استفاده کرد.
هنگام استفاده از ArrayList نیازی به دانستن تعداد اعضایی که
باید اضافه شوند نمی باشد و با استفاده از متد Add آن به سادگی می توان
اعضاء را به آن اضافه نمود . تعدادی از خواص و متدهای این کلاس به صورت
زیر هستند :
Adapter , FixedSize , ReadOnly , Repeat ,
Synchronized , Capacity,Count , IsFixedSize , IsReadOnly ,
IsSynchronized , Item , SyncRoot , Add , AddRange , BinarySearch ,
Clear , Clone , Contains , CopyTo , GetEnumerator , GetRange ,
IndexOf , Insert , InsertRange , LastIndexOf , Remove , RemoveAt ,
RemoveRange , Reverse , SetRange , Sort , ToArray , TrimToSize
مثال : یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید
و نام آن را درابتدا ex23 انتخاب نمایید. سپس کد زیر را درون آن
بنویسید :
using
System.Collections;
namespace ex23
{
// a simple
class to store in the array
public class Employee
{
public Employee(int empID)
{
this.empID = empID;
}
public override string ToString( )
{
return
empID.ToString( );
}
public int EmpID
{
get
{
return empID;
}
set
{
empID = value;
}
}
private int empID;
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
ArrayList empArray = new ArrayList( );
ArrayList
intArray = new ArrayList( );
// populate the array
for (int
i = 0;i<5;i++)
{
empArray.Add(new Employee(i+100));
intArray.Add(i*5);
}
// print all the contents
for
(int i = 0;i
{
Console.Write(“{0} “,
intArray[i].ToString( ));
}
Console.WriteLine(“\n”);
//
print all the contents of the button array
for (int i =
0;i
{
Console.Write(“{0} “,
empArray[i].ToString( ));
}
Console.WriteLine(“\n”);
Console.WriteLine(“empArray.Capacity: {0}”,
empArray.Capacity);
Console.ReadLine();
}
}
}
توضیحاتی در مورد کد فوق :
۱- با کلمه ی
کلیدی override در قسمت های بعدی آشنا خواهیم شد.
۲- برای استفاده
از ArrayList لازم بود تا فضای نامی را که این کلاس در آن تعریف شده
است ، به برنامه اضافه کرد.
۳- در مثال فوق نحوه ی تعریف دو کلاس
را در یک فضای نام مشاهده می نمایید.
۴- نحوه ی تعریف و مقدار دهی ArrayList و هم
چنین استفاده از خواص آن در مثال فوق بررسی شده است
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن