01/10/2018, 01:04

Ý nghĩa thực sự của một indexer trong c#

trong c# có một khái miệm là indexer nó giúp cho một class có thể đánh số chỉ mục như một mảng đây là đoạn code vd minh hoa cho khái niệm đó

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MangNhien
{
    class Program
    {
        static void Main(string[] args)
        {
            Stduent s = new Stduent();
            for(int i=0;i<10;i++)
            {
                Console.Write("moi cac ban nhap phan tu cho mang nha :{0}
 ",s[i]);

            }
            Console.ReadKey();
        }
    }
    class Stduent
    {
        private string[] namelist = new string[10];       
        public Stduent()
        {
            for(int i=0;i<10;i++)
            {
                namelist[i] = "do minh nhien";
            }
        }
        public string this[int index]
        {
            get
            {
                return namelist[index];
            }
            set
            {
                namelist[index] = value;
            }
        }

    }
}

nói thật là mình vẫn chưa hiểu ý nghĩ thực sự cảu cái này lắm nó dùng để làm gì .Sao ko dùng ArrayLIst luôn cho nhanh mà cái này vd trong lớp Stduent thì nếu có thêm một thuộc tính như mark nữa mà lại tạo Indexers thì là ko làm được vậy mọi người cho mình hỏi ý nghĩa thực sự của một Indexers là gì khi mà muốn dùng em này>chỉ biểu ddienx được 1 thuộc tính trong một class

Quân viết 03:08 ngày 01/10/2018

Rút gọn code, sử dụng chung 1 convention cho phép custom code vẫn có chung cú pháp với design code được định nghĩa bởi ngôn ngữ

Đỗ Nhiên viết 03:16 ngày 01/10/2018

@Duong_Act bac cho cao kien di bac

明玉 viết 03:12 ngày 01/10/2018

Bạn trình bày lại vấn đề xem, câu cú khó đọc quá

Văn Dương viết 03:13 ngày 01/10/2018

Biến đối tượng thành mảng ảo và truy xuất dữ liệu bên trong dựa vào chỉ số (index). Vẫn đảm bảo tính chất bao đóng của hướng đối tượng mà không phải viết từng property cho mỗi dữ liệu.

Đỗ Nhiên viết 03:12 ngày 01/10/2018

nhưng class đó chỉ áp dụng được cái này khi class đó chỉ có một thuộc tính duy nhất nếu có hai thuộc tính thì chỉ ap dụng được 1 cái

Văn Dương viết 03:05 ngày 01/10/2018

Ai biểu thế ?

public  class MyObject{
    private int A=1;
    private int B=2;
    public int this[int index]{
        get{
              if(index==0) return A;
              if(index==1) return B;
              return 0;
        }
    }
}
public  class MyObject{
    private int A=1;
    private string B="2";
    public object this[int index]{
        get{
              if(index==0) return A;
              if(index==1) return B;
              return null;
        }
    }
}
Huy Hoàng Phạm viết 03:06 ngày 01/10/2018

Tại sao ko google trước khi hỏi

Đỗ Nhiên viết 03:13 ngày 01/10/2018

ok thanh anh em lại serech với từ khác nên hơi củ chuối thanh anh ạ

Bài liên quan
0