نوشتن property برای آرایه یک بعدی - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

نوشتن property برای آرایه یک بعدی

0 امتیاز

با سلام.من می خواستم برای یک ارایه یک بعدی  property  بنویسم , چه طور می تونم این کار رو بکنم.

خیلی ممنون 

سوال شده خرداد 15, 1393  بوسیله ی Sher228 (امتیاز 167)   18 33 44
سلام دوست عزیز

برای اینکار آرایه رو به صورت یک کلاس در بیار یا از کلاس آزاین استفاده کن
یعنی چی آرایه رو بصورت کلاس در بیار ؟

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام

از Indexer استفاده کن، Indexer برای تایپهایی مثل آرایه ساخته شده که چنیدن مقدار درون خودشون دارن.

 تنها از یک Indexer در یک کلاس می توان استفاده کرد، Indexer توانایی overload شدن دارد، Indexer بلاک کد دارد و مدیریت آن سهل و کاربردی است، از یک Indexer که در interface ایجاد شده است می توان در چندین کلاس استفاده کرد و کارکردهای متفاوتی برای Indexer در نظر گرفت.

مثال

Indexer در کلاس :

namespace IndexerInClass
{
    public class Test
    {
        private int[] Array = new int[3];
        public int this[int i]
        {
            get { return Array[i]; }
            set { Array[i] = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test objTest = new Test();
            objTest[0] = 25;
            objTest[1] = 26;
            objTest[2] = 27;

            for (int i = 0; i < 3; i++)
            {
                System.Console.WriteLine(objTest[i]);
            }
            System.Console.ReadKey();
        }
    }
}

Indexer دز Interface:

namespace IndexerInInterface
{
    interface ITest
    {
        int this[int i]
        {
            get;
            set;
        }
    }

    public class Test : ITest
    {
        private int[] Array = new int[3];
        public int this[int i]
        {
            get { return Array[i]; }
            set { Array[i] = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test objTest = new Test();
            objTest[0] = 25;
            objTest[1] = 26;
            objTest[2] = 27;

            for (int i = 0; i < 3; i++)
            {
                System.Console.WriteLine(objTest[i]);
            }
            System.Console.ReadKey();
        }
    }
}

کار با عبارتهای منطقی هم راحتتر میشه

namespace IndexerInBoolean
{
    public class Test
    {
        private bool[] Short = new bool[16];   //short شبیه سازه
        public bool this[int i]
        {
            get { return Short[i]; }
            set {Short[i] = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test objTest = new Test();
            objTest[1] = true;      //0000000000000010
            objTest[16] = true;     //1000000000000010
        }
    }
}

 

پاسخ داده شده تیر 22, 1393 بوسیله ی امیدوار (امتیاز 872)   21 63 76
انتخاب شد مرداد 20, 1393 بوسیله ی BlueBlade
+1 امتیاز
class myarray
{
 int[] ary;
public myarray(int length)
{
 ary  = new int[length];
}

 // حالا متدها و خصوصیات رو تعریف کن
}

 

پاسخ داده شده تیر 4, 1393 بوسیله ی alixw24 (امتیاز 656)   2 5 13
...