Helpex - Trao đổi & giúp đỡ Đăng nhập
74

Trong C #, giá trị mặc định của biến thể hiện của lớp là int?gì?

Ví dụ, trong đoạn mã sau, giá trị nào sẽ MyNullableIntcó nếu nó không bao giờ được gán rõ ràng?

class MyClass
{
    public int? MyNullableInt;
}

(Có vẻ như câu trả lời gần như chắc chắn nullhoặc 0, nhưng đó là câu trả lời nào?)

74 hữu ích 4 bình luận 45k xem chia sẻ
109

Giá trị mặc định cho int?- và cho bất kỳ loại nullable nào sử dụng "loại?" khai báo - là null.

Tại sao đây là trường hợp:

  • int?là đường cú pháp cho loại Nullable <T> (trong đó T là int), một cấu trúc. ( tham khảo )
  • Các Nullable<T>loại có một HasValue bool thành viên, mà khi false, làm cho Nullable<T>dụ "hành động như" một nullgiá trị. Cụ thể, phương thức Nullable <T> .Equals bị ghi đè để trả về truekhi a Nullable<T>với HasValue == falseso với nullgiá trị thực .
  • Từ Đặc tả ngôn ngữ C # 11.3.4 , giá trị mặc định ban đầu của một cấu trúc cấu trúc là tất cả các trường loại giá trị của cấu trúc đó được đặt thành giá trị mặc định của chúng và tất cả các trường loại tham chiếu của cấu trúc đó được đặt thành null.
  • Giá trị mặc định của một boolbiến trong C # là false ( tham chiếu ). Do đó, thuộc HasValuetính của một Nullable<T>thể hiện mặc định false; mà lần lượt làm cho Nullable<T>cá thể đó tự hành động như thế null.
109 hữu ích 5 bình luận chia sẻ
21

Tôi cảm thấy quan trọng để chia sẻ Nullable<T>.GetValueOrDefault()phương pháp đặc biệt tiện dụng khi làm việc với các tính toán toán học sử dụng các giá trị Nullable<int>aka int?. Có nhiều lúc bạn không phải kiểm tra HasValuetài sản và bạn chỉ có thể sử dụng GetValueOrDefault()thay thế.

var defaultValueOfNullableInt = default(int?);
Console.WriteLine("defaultValueOfNullableInt == {0}", (defaultValueOfNullableInt == null) ? "null" : defaultValueOfNullableInt.ToString());

var defaultValueOfInt = default(int);
Console.WriteLine("defaultValueOfInt == {0}", defaultValueOfInt);

Console.WriteLine("defaultValueOfNullableInt.GetValueOrDefault == {0}", defaultValueOfNullableInt.GetValueOrDefault());

Giá trị mặc định của loại null int int int. Khác (bao gồm cả dấu hỏi) là gì?

21 hữu ích 0 bình luận chia sẻ
0
var x = default (int?);
Console.WriteLine("x == {0}", (x == null) ? "null" : x.ToString());
0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# integer nullable , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading