Làm thế nào để check một field có được set value hay là không?

Tôi đang muốn check một field có được set data hay là không để chỉ save field đó vào database.

VD:

    class MyClass
    {
        public string name { get; set; }
        public int age { get; set; }
    }


        MyClass m = new MyClass();
        m.age = 1;

        MyClass m2 = new MyClass();
        m2.name = null;

Làm sao để check được là m.name đang không được set value? ( hay m.name khác gì với m2.name)
m.age khác gì m2.age ở trên?

Nói chung là mình muốn check, là field đó được để giá trị là default chứ không phải được set là giá trị mặc định.

Thanks!

Check null :

var IsNull = m2.name==null?true:false;

MyClass là một Object. m và m2 là 2 vùng nhớ của MyClass khi được tạo. Mặc định khi tạo 1 Object thì những thuộc tính của nó cũng được khởi tạo theo. Nên ta sẽ có những trường age và name.

Vd đơn giản hơn là ta được yêu cầu làm 2 cái ly y chang nhau.(là new Ly) Và vì ta mới chỉ làm ra 2 cái ly thì nó chưa có chứa gì trong ly nên giá trị chứa trong ly là null. Nếu 1 trong 2 cái ly lúc tạo ra và bạn đổ nước hay rượu thì giá trị chứa của ly là chứa nước hay chứa rượu.

Xin lỗi, bạn không hiểu câu hỏi của mình rồi. m2 mình gán name bằng null, m mình không gián giá trị cho name vậy khác nhau giữa hai biết đó là gì? Làm sao để check được?

Trong C++ thì khi dùng hàm khởi tạo thì theo trí nhớ của mình thì những thuộc tính đó được gán bằng null hết.
Cách kiểm tra null thì như bạn @Twot_Leo_L2t ghi trên.
Bạn có thể chạy thử đoạn code trên kiểm tra xem có null không.

Người ta hỏi C# cha nội =]]z

Câu hỏi của bạn khá mơ hồ, nên người khác không trả lời chính xác ý của bạn.

mm2 là thực thể (entity) giống như mìnhbạn vậy, độc lập mọi thứ với nhau. Mặc dù cùng một khuôn mẫu (class) Con_người.
Độc lập có nghĩa là các thuộc tính (dữ liệu) không phụ thuộc vào nhau. Một bên thay đổi thì không liên quan đến biên kia.

Cả 2 đều giống nhau. Vì mặc định khi tạo ra thì nó đã được set là null. Nên bạn có set thêm là null thì cũng vậy.

Nếu bạn muốn kiểm tra nữa thì :

var result = String.IsNullOrEmpty(m.name) && String.IsNullOrEmpty(m1.name);

Các field của một object, khi object được khởi tạo, nếu như khai báo class không cung cấp giá trị mặc định và constructor không gán giá trị thì các field này có giá trị mặc định theo ngôn ngữ. Với field kiểu class thì mặc định là null, chẳng hạn string. Với field kiểu struct thì mỗi thằng một kiểu, chẳng hạn như int là 0.

Đúng là set bằng null và để không set cũng là null. và mình muốn biết 2 cái đó khác nhau như thế nào. và làm sao để check được.

Java thì mặc định là null. Cụ thể mặc định khai báo mà chưa gán giá trị:

  • Luận lý: false.
  • Kí tự: NULL (\0)
  • Số: 0.
  • Chuỗi: null.
  • Đối tương (khác): null.

Bình thường chắc không có cách phát hiện thay đổi này.

.js

Trong Javascript thì lại có.
Tất cả các biến nào khai báo mà chưa gán giá trị thì đều là undefined thay vì null.

var a;
var b = null;
console.log(a,b);
document.write(a+"<br/>"+b);

Trong javascript cũng có “lớp” theo dõi sự thay đổi của đối tượng.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?