Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Thắc mắc về properties

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    5

    Mặc định Thắc mắc về properties

    Mới học qua C# nên còn hơi lúng túng ở properties.Tôi có đoạn code sau:
    PHP Code:
    using System;
    using System.Collections.Generic;
    public class 
    HinhCn
    {
        
    float cd,cr;
        public 
    HinhCn(float a,float b)
        {
            
    cd=a;
            
    cr=b;
        }
        public 
    double Dientich()
        {
            return (double)(
    cd*cr);
        }
        public 
    double Chuvi()
        {
            return ((
    cd+cr)*2);
        }
        public 
    float ThuocTinh
        
    {
            
    get
            
    {
                return 
    cd;
            }
            
    set
            
    {
                
    cd=5;//không gán bằng value nữa
            
    }
        }
    }
    public class 
    Tester
    {
        static 
    void Main()
        {
            
    float cd,cr;
            
    Console.WriteLine("Chieu dai:");
            
    cd=float.Parse(Console.ReadLine());
            
    Console.WriteLine("Chieu rong;");
            
    cr=float.Parse(Console.ReadLine());
            
    HinhCn hcn=new HinhCn(cd,cr);
            
    Console.WriteLine("\nChu vi:{0},dien tich:{1}",hcn.Chuvi(),hcn.Dientich());
            
    Console.WriteLine("\nThuoc tinh truoc:{0}",hcn.ThuocTinh);
            
    hcn.ThuocTinh++;
            
    Console.WriteLine("\nThuoc tinh sau={0}",hcn.ThuocTinh);
            
    Console.WriteLine("\nChu vi:{0},dien tich:{1}",hcn.Chuvi(),hcn.Dientich());
            
    Console.WriteLine("\nThuoc tinh:{0}",hcn.ThuocTinh);
            
    Console.ReadLine();
        }

    Sẽ có kết quả:
    Chieu dai:
    10
    Chieu rong;
    20

    Chu vi:60,dien tich:200

    Thuoc tinh truoc:10

    Thuoc tinh sau=5

    Chu vi:50,dien tich:100

    Thuoc tinh:5
    Nhưng nếu tôi bỏ câu lệnh hcn.ThuocTinh++ đi thì lại in ra được kết quả:
    Code:
    Chieu dai:
    10
    Chieu rong;
    20
    
    Chu vi:60,dien tich:200
    
    Thuoc tinh truoc:10
    
    Thuoc tinh sau=10
    
    Chu vi:60,dien tich:200
    
    Thuoc tinh:10
    Mọi người giải thích hộ tôi tại sao nếu có hcn.ThuocTinh++ thì Thuoc tinh sau lại thay đổi không?

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    37

    Visual C# Code:
    1. public class Tester
    2. {
    3.     static void Main()
    4.     {
    5.         float cd,cr;
    6.         Console.WriteLine("Chieu dai:");
    7.         cd=float.Parse(Console.ReadLine());
    8.         Console.WriteLine("Chieu rong;");
    9.         cr=float.Parse(Console.ReadLine());
    10.         HinhCn hcn=new HinhCn(cd,cr);
    11.         Console.WriteLine("\nChu vi:{0},dien tich:{1}",hcn.Chuvi(),hcn.Dientich());
    12.         Console.WriteLine("\nThuoc tinh truoc:{0}",hcn.ThuocTinh);
    13.         //Set mặc đinh = 5, => cộng thêm hay làm gì đó giá trị vẫn = 5;    
    14.         hcn.ThuocTinh++;
    15.         //=> nó in ra 5 là đúng rồi mà
    16.         Console.WriteLine("\nThuoc tinh sau={0}",hcn.ThuocTinh);
    17.         Console.WriteLine("\nChu vi:{0},dien tich:{1}",hcn.Chuvi(),hcn.Dientich());        
    18.         Console.WriteLine("\nThuoc tinh:{0}",hcn.ThuocTinh);
    19.         Console.ReadLine();
    20.     }
    21. }

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    5

    Vậy khi mình set{cd=5} thì sau đó giá trị của ThuocTinh luôn mặc định là 5?Vậy tại sao khi mình thêm dòng lệnh hcn.ThuocTinh++ vào thì giá trị của hcn.ThuocTinh lại khác đi?

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    37

    Mình chỉ sét mình dòng này thôi nha
    hcn.ThuocTinh++;
    <=>hcn.ThuocTinh = hcn.ThuocTinh + 1;
    khi bạn dùng hcn.ThuocTinh thì get {} đc thực hiện.
    khi bạn dùng hcn.ThuocTinh = ... thì set {} đc thực hiện.
    =>hcn.ThuocTinh{5} = hcn.ThuocTinh{10} + 1; //Bất kể bạn + 1 thì khi set vẫn = 5.
    => bạn lấy ra cũng = 5;

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Thế này nhé: xem cái này nó tương đương ko?

    Visual C# Code:
    1. float f=hcn.ThuocTinh;
    2. f++;
    3. hcn.ThuocTinh=f;

    Có phải nếu dùng hcn.ThuocTinh++ thì sẽ được viết rỏ ràng như trên ko? Chắc cậu đã hiểu được vấn đề rồi.

    Gác Kiếm

  6. #6
    Ngày gia nhập
    04 2008
    Bài viết
    14

    Mặc định Thắc mắc về properties

    Code:
        public float ThuocTinh
        {
            get
            {
                return cd;
            }
            set
            {
                cd=5;//không gán bằng value nữa
            }
        }
    Đúng như các bạn ntcuong nói:

    Nếu bạn chỉ gọi hcn.ThuocTinh thì nó sẽ dùng phương thức get => returrn cd (ở trên cd = 10).

    Nếu bạn sử dụng hcn.ThuocTinh với toán tử tăng 1 là hcn.ThuocTinh++ thì sẽ tương đương với một phép gán cho hcn.ThuocTinh, thì nó sẽ dùng phương thức set => cd luôn = 5.

Các đề tài tương tự

  1. Properties(get/set) | Giúp mình hiểu rõ hơn
    Gửi bởi nhanxxx trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 8
    Bài viết cuối: 13-04-2013, 10:30 AM
  2. 741_5:Hỏi về phím tắt in Properties
    Gửi bởi thansau741 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 15-07-2012, 05:26 PM
  3. Cách tạo properties cho 1 component?
    Gửi bởi JohnnyChung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 11-07-2012, 02:46 PM
  4. Tại sao phải tạo property và sử dụng properties như thế nào
    Gửi bởi chickenbl trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-03-2011, 11:45 AM
  5. Kỹ thuật C++ thắc mắc về Properties trong msdn
    Gửi bởi manocanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 07-12-2010, 08:19 AM

Quyền hạn của bạn

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