سلام
بعد از یک امتحان آمار سنگین و نافرم ونا جور و غیره
اومدیم سراغ indexer
indexer چیه؟! به چه کاری میاد؟!
indexer یه چیزی مثل property ها هست از نظر تعریفی و کارش اینه که میذاره رو آرایه ای از شی ها و Object ها به طور مستقیم دسترسی داشته باشیم!مثلاً وقتی یک آرایه 10 عنصری داشتیم وقتی می خواستیم مثلاً عنصر هفتم رو مقدار دهی کنیم با این فرض که اسم آرایه A باشه این کار رو می کردیم!
A[6]=78;
و دقیقاً همین کار رو برای Object ها با indexer ها انجام می دیم!حالا indexer رو چه جوری تعریف می کنیم:
indexer مثل property تعریف میشه و set و get داره!
اول سطح دسترسی یا modifier رو تعریف می کنیم! بعد مقدار برگشتی یا return type و در آخر هم مقدار آرگومان ها در کنار کلمه index و در آخر هم set و get:
(modifier) (return type) this [(argument) index]
{get
{
// Get codes goes here
}
set
{
// Set codes goes here
}
}
private string []data = new string[5];
public string this [int index]
public string this [int index]
{
get
{
return data[index];get
{
}
set
{
data[index] = value;
}
}set
{
data[index] = value;
}
و این هم استفاده کردنش تو برنامه اصلی!
class program
Console.WriteLine("{0},{1},{2},{3},{4}",mc[0],mc[1],mc[2],mc[3],mc[4]);
برای کسایی که می خوان برنامه سازی پیشرفته امتحان بدن تا همین جا کافیه ولی برای کسایی که می خوان بیشتر بدونن:{
public static void Main()
{
MyClass mc = new MyClass();
mc[0] = "Rajesh";
mc[1] = "A3-126";
mc[2] = "Snehadara";
mc[3] = "Irla";
mc[4] = "Mumbai";public static void Main()
{
MyClass mc = new MyClass();
mc[0] = "Rajesh";
mc[1] = "A3-126";
mc[2] = "Snehadara";
mc[3] = "Irla";
Console.WriteLine("{0},{1},{2},{3},{4}",mc[0],mc[1],mc[2],mc[3],mc[4]);
}
}indexer ها به ارث هم می رسن:
using System;
class Base
{
public int this[int indxer]
{
get
{
Console.Write("Base GET");
return 10;
}
set
{
Console.Write("Base SET");
}
}
} class Base
{
public int this[int indxer]
{
get
{
Console.Write("Base GET");
return 10;
}
set
{
Console.Write("Base SET");
}
}
class Derived : Base
{
...
..
.
}
class program
}
class program
{
public static void Main()
{
Derived d1 = new Derived();
d1[0] = 10;
Console.WriteLine(d1[0]);
}
}
using System;
class Base
{
public virtual int this[int index]
{
get
{
Console.Write("Base GET");
return 10;
}
set
{
Console.Write("Base SET");
}
}
}
class Derived : Base
{
public override int this[int index]
{
get
{
Console.Write("Derived GET");
return 10;
}
set
{
Console.Write("Derived SET");
}
}
}
class program
{
public static void Main()
{
Base b1 = new Derived();
b1[0]= 10;
Console.WriteLine(b1[0]);
}
}
و از همه مهم تر میشه indexer ها رو Abstract هم تعریف کرد!{
public static void Main()
{
Base b1 = new Derived();
b1[0]= 10;
Console.WriteLine(b1[0]);
}
}
using System;
abstract class Abstract
{
public abstract int this[int index]
{
get;
set;
}
}
class Concrete : Abstract
{
public override int this[int index]
{
get
{
Console.Write(" GET");
return 10;
}
set
{
Console.Write(" SET");
}
}
}
class program
{
public static void Main()
{
Concrete c1 = new Concrete();
c1[0] = 10;
Console.WriteLine(c1[0]);
}
}
منبع کد ها: http://www.csharphelp.com/2006/04/-c-indexers/
{
public static void Main()
{
Concrete c1 = new Concrete();
c1[0] = 10;
Console.WriteLine(c1[0]);
}
}
منبع کد ها: http://www.csharphelp.com/2006/04/-c-indexers/
آخه چرا آدما اینقدر فرق میکنن؟ من سه بار آمارم رو گرفتم آخر سر استادم دلش برام سوخت بهم 10 داد!!! روم سیاه!
پاسخحذفبهر حال... من یه چیزایی دارم که تو نداری! دلت بسوزه!
با کفر جدیدی به روزم!
هی یه چیزه جالب...کی توضیحات من در مورد indexer رو فهمیده؟! :D
پاسخحذف