01/10/2018, 01:00

Properties trong c#

mình có một đoạn code như này trong c#

private String id;
private String name;
private float mark ;

làm sao để tạo được Properties của các id name và mark mình có thử mọt vài giải pháp trong visual stdio nhưng ko hài lòng có cách nào để insert code vào như bên java ko nhỉ xin cảm ơn

Văn Dương viết 03:16 ngày 01/10/2018
public string id{get;set;}
public string name{get;set;}
public float mark{get;set;}
Đỗ Nhiên viết 03:08 ngày 01/10/2018

ý em là kiểu như java ý anh tạo các biến rồi tạo geter seter cho nó anh à

Trần Ngọc Khoa viết 03:07 ngày 01/10/2018

Không biết ý bạn là gì nhỉ.

Bạn có thể viết một phương thức có tầm vực là public thay thế cho property. Theo mình property trong C# chỉ để code tiện hơn thôi, thực tế nó cũng là một phương thức để bên ngoài thao tác với biến thông qua nó (an toàn hơn).

Hoặc nếu bạn muốn đặt thêm điều kiện khi gán giá trị cho biến thì có thể viết như thế này:

 public string Name {
        get { return name; }
        set { 
            if (!IsValidName(value)) throw InvalidFormatException(value);
            name = value;
        }
Đỗ Nhiên viết 03:08 ngày 01/10/2018

ý mình là như này vd đây là một đoạn code java nè

public class Phong {
    private String id;
    private String kind;
    private String Status;
    private float mark;

    public Phong() {
    }

    public Phong(String id, String kind, String Status, float mark) {
        this.id = id;
        this.kind = kind;
        this.Status = Status;
        this.mark = mark;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getKind() {
        return kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String Status) {
        this.Status = Status;
    }

    public float getMark() {
        return mark;
    }

    public void setMark(float mark) {
        this.mark = mark;
    }
    
}

trong c# mình cũng muốn làm một cái tương tự như này nhưng có cách nào insert code được vào ko bạn

Trần Ngọc Khoa viết 03:15 ngày 01/10/2018

thì viết y chang thôi mà bạn, đổi String thành string là được rồi

Trần Hoàn viết 03:13 ngày 01/10/2018
public class Phong
    {
        private string ID;
        private string Kind;
        private string Status;
        private float Mark;
        Phong(string NewID, string NewKind, string NewStatus, float NewMark)
        {
            ID = NewID;
            Kind = NewKind;
            Status = NewStatus;
            Mark = NewMark;
        }
        public string GetID()
        {
            return ID;
        }

        public void SetId(string NewID)
        {
            ID = NewID;
        }

        public string GetKind()
        {
            return Kind;
        }

        public void SetKind(string NewKind)
        {
            Kind = NewKind;
        }

        public string GetStatus()
        {
            return Status;
        }

        public void SetStatus(string NewStatus)
        {
            Status = NewStatus;
        }

        public float GetMark()
        {
            return Mark;
        }

        public void SetMark(float NewMark)
        {
            Mark = NewMark;
        }
    }

Mình là mình rất ít khi dùng this. vì mình thấy cái đó làm xấu code ra Nên mình có thói quen đặt biến cục bộ với biến toàn bộ nó khác nhau cho dễ nhìn

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

Tự viết đê còn gì nữa ? C# nó đã tiến hoá hẳn hơn 1 bước thế còn không muốn lại muốn khổ dâ… à

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

bước tự viết code hả anh

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

đùa thế ko có cách nào insert hả bác hay cứ thế mà viết thôi à

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

Đúng vậy rồi còn gì nữa. Sau này cậu sẽ thấy việc tách thành 2 method là việc rất là vớ vẩn trong C#. Vì nó sẽ bị mất đi rất nhiều chức năng so với một properties bình thường trong C#. Tóm lại là làm thế không được cái lợi lộc gì cả, chỉ mệt xác thôi

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

đại ca cho cái vd cái nào

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

đây là bên netbean nó tự insert vào mà bác

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

Ví dụ 1:
Khi kéo thả một cái Label vào Form. Nhìn bảng properties có rất nhiều property. Chỉnh thông số phát thì label trên Form thay đổi liền. Sau này cậu thiết kế một cái để kéo vào Form mà dùng 2 hàm thì còn lâu mới có cái đó.
Ví dụ 2:
Nếu dùng công nghệ WPF ( thế hệ sau của Winform ) thì có một khái niệm là databinding. Người ta sẽ liên kết dữ liệu giữa tầng này với tầng kia. Viết 2 method xong tự đi mà viết các hàm update, chắc cũng phê

Trần Ngọc Khoa viết 03:15 ngày 01/10/2018

property chỉ là một khái niệm thôi, và C# đã cụ thể hóa khái niệm property qua cú pháp khai báo của nó. Phần về netbean thì nó là một IDE nên việc nó tự gen property cho bạn cũng là chuyện dễ hiểu.

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

Properties are an extension of fields and are accessed using the same syntax. They use accessors through which the values of the private fields can be read, written or manipulated. đây là định nghĩa của cái này trên trang này https://www.tutorialspoint.com/csharp/csharp_properties.htm tức là nó sẽ dùng để truy cập vào các biến private or lấy dữ liệu từ đó ra đúng ko bạn

Trần Hoàn viết 03:05 ngày 01/10/2018

Nói chung là khi nào mình tìm mỏi mắt trong bảng property không thấy property hoặc event đó thì mới viết thôi. Mà nếu class do bạn tự tạo ra thì sẽ không có property phải viết code, còn delegate từ class có sẵn thì cũng chỉ có property có sẵn thôi. Property nó là tự sinh code trong designer mà

Trần Ngọc Khoa viết 03:09 ngày 01/10/2018

Có thể cho là như vậy.
Trong trang web bạn đưa có nói về khái niệm của property trong C#. Theo mình biết thì C# làm đơn giản hóa vấn đề thao tác với các biến được ẩn giấu trong lớp. Trước đó thì người ta sẽ phải viết các phương thức setter, getter.

Với các phiên bản C# từ 3.0 (nếu mình nhớ không nhầm) thì việc khai báo properties còn đơn giản hơn nhiều

public class Phong {
    private string id;
    private string kind;
    private float mark;

    public Phong() {
    }

    public string Id{get;set;}
    public string Name{get;set;}
    public float Mark{get;set;}
}

Hoặc đơn giản hơn nữa

 public class Phong {
            public string Id{get;set;}
            public string Name{get;set;}
            public float Mark{get;set;}
            public Phong() 
            {
            }
    }

Lúc này thì khỏi cần khai báo luôn cả biến :))))

Huy Hoàng Phạm viết 03:01 ngày 01/10/2018

Học và hiểu sâu C# sẽ biết khi dùng properties dạng {get;set;} thì compiler sẽ tự sinh biến cục bộ, không cần viết kiểu giả cầy Java này làm gì.

https://msdn.microsoft.com/en-us/library/bb384054.aspx

Chỉ nên dùng biển cục bộ trong một số trường hợp cần validation hay xử lý v…v thôi.

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

bạn làm việc với c# thì đừng nên lôi mấy cái giả cầy của java sang, sẽ thấy khó chịu vì bên c# cú pháp bị cắt gọt đi cho tiện hơn rồi. Thế nên nó mới là 2 ngôn ngữ, giống lắm chỗ nhưng cũng khác lắm chỗ

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

Sao anh em lại cứ gọi kiểu của Java là giả cầy thế nhỉ. Có bức xúc gì không nhưng mà tại nghe nói vậy lại lên cơn thèm :))))

Bài liên quan
0