Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    02-09-2010
    Bài viết
    16
    Like
    0
    Thanked 0 Times in 0 Posts

    Kính mong các sis và bros giúp cách dùng (get và set)

    Tôi chưa hiểu thấu đáo cách dùng get và sét trong c#, ai biết giúp đỡ nhé, cảm ơn nhiều!
    Quote Quote

  2. #2
    Tham gia
    13-05-2008
    Bài viết
    63
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi luuhaphu View Post
    Tôi chưa hiểu thấu đáo cách dùng get và sét trong c#, ai biết giúp đỡ nhé, cảm ơn nhiều!
    Set là gán giá trị vào 1 biến nào đó

    Get là lấy giá trị của biến ra

    Đại khái là vậy

  3. #3
    Tham gia
    10-05-2010
    Bài viết
    124
    Like
    0
    Thanked 2 Times in 2 Posts
    2 từ khóa này dùng trong định nghĩa Property mà.

  4. #4
    Tham gia
    02-09-2010
    Bài viết
    16
    Like
    0
    Thanked 0 Times in 0 Posts
    Xin chân thành cảm ơn! Nhưng các bros cho một ví dụ minh họa thì tuyệt vời hơn.

  5. #5
    Tham gia
    15-08-2009
    Bài viết
    133
    Like
    0
    Thanked 0 Times in 0 Posts
    2 thuộc tính này thường dùng để thao tác với fields private.Đảm bảo tính encapsulate của oop.
    ví dụ:
    Code:
    private int x;
    private string y;
    public int X
    {
        get{ return x;}
        set{ x = value;}
    }
    public string Y
    {
        get{ return y;}
        set{ y = value;}
    }
    trong .Net >=3.0.ban có thể khai báo 1 cách ngắn gọn
     public int X{get;set;};//khong can phai khai báo int x;

  6. #6
    Tham gia
    15-03-2010
    Bài viết
    1,561
    Like
    84
    Thanked 1,571 Times in 860 Posts
    Giải thich cách dùng get/set có thể phải nói hết vài trang. Bởi ví muốn hiểu hai từ này, bạn phải phân biệt được cái khác nhau giữa biến (field) và thuộc tính (property)

    Ở đây chỉ có thể nói sơ qua. Như cnttk2005 đã giải thích, get là lấy giá trị và set là gán giá trị cho một biến nào đó.

    Vậy bạn sẽ đặt câu hỏi: tại sao không lấy và gán thẳng thừng?

    Trả lời: là vì biến này không hẳn đã hiện vật, mà rất có nhiều khả năng nó có dạng gián tiếp hay có khi còn là trừu tượng nữa. Nói cách khác, khái niệm thuộc tính (properties) được đặt ra để chỉ vào trường hợp biến gián tiếp/trừu tượng này.

    VD thuộc tính gián tiếp:

    string ten, ho; // ten, ho là 2 biến (fields)

    string HoVaTen // thuộc tính (property)
    {
    get { return ho + " " + ten; }
    set { ho = TachHoTuHoVaTen(value); ten = TachTenTuHoVaTen(value); }
    }

    ho = "Le";
    ten = "Van Bom";
    Console.WriteLine(HoVaTen); // in ra Le Van Bom
    HoVaTen = "Nguyen Van Be";
    Console.WriteLine(ho); // in ra Nguyen
    Console.WriteLine(ten); // in ra Van Be

    (dĩ nhiên là bạn phải có hàm để nhận một chuỗi và tách họ, tên ra. Hoặc bạn có code trong phần set {...} để tách value thành ra ho và ten)

    Code trên chỉ là ví dụ thôi, trên thực tế khi khai báo lớp người ta đặt biến là private để giấu chúng đi và đặt thuộc tính làm public như giao diện (như vd đôi biến x, y và đôi thuộc tính X, Y của Pa Pa). Thường thì thuộc tính luôn được đặt public. Nếu không muốn thuộc tính bị thay đổi, người ta không lập hàm set. Tương tự, nếu không muốn cho đọc thuộc tính, người ta không lập hàm get.

    Ngoài lý do biến gián tiếp kể trên, người ta còn dùng thuộc tính để trừu tượng hóa dạng của biến, giúp cho code dễ bảo trì. VD bạn có biến NgayNhapHoc, hiện nằm trong dạng string 'dd/mm/yyyy'. Một ngày đẹp trời, bạn đổi nó thành dạng DateTime. Nếu không có thuộc tính, bạn phải search hết tất cả các module có sử dụng lớp này và sửa những chỗ dùng trường NgayNhapHoc, một công việc không nhỏ. Trong khi đó, nếu NgayNhapHoc đã là private, tức là không có code nào sử dụng nó cả (ngoài code trong lớp), và để nhập/xuất trường này, bạn đã đặt ra thuộc tính NgayNH. Bạn chỉ việc sửa phần get/set của cái thuộc tính NgayNH này thôi. Chúng vẫn nhập một string và xuất ra một string dạng 'dd/mm/yyyy' nên bạn không phải sửa thêm module nào nữa cả. (Đây là phần kỹ thuật code cao cấp, bạn không cần phải đào sâu thêm trong giai đoạn này)

  7. #7
    Tham gia
    02-09-2010
    Bài viết
    16
    Like
    0
    Thanked 0 Times in 0 Posts
    Thank tất cả mọi người đã nhiệt tình giúp đỡ !

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •