Không thể có giá trị về mặt logic một cách logic. Nó sẽ phải trả lại một cái gì đó, một số bó của 1s và 0 mà ít nhất được cho là một tham chiếu đến một Tuple<String, String>[]
, do đó, đến mức đó nó có một giá trị.
Đó cũng là trường hợp tất cả các trường trong lớp được đặt thành giá trị mặc định của chúng (default(T)
cho bất kỳ loại nào T
chúng là null
cho tất cả các loại tham chiếu). Nếu không nó sẽ có thể có một đối tượng ở trong trạng thái không chỉ có ý nghĩa gì về những gì nó làm, nhưng điều đó không có ý nghĩa gì bởi các quy tắc của những gì .NET mong đợi các đối tượng cần làm. Điều này bao gồm các trường ẩn đằng sau các thuộc tính tự động.
Bây giờ, trong một số ngôn ngữ chúng ta có thể làm tương đương với điều này:
public Tuple<String, String>[] Breadcrumbs
{
get
{
Tuple<String, String>[] whatIWillSend;
return whatIWillSend;
}
}
Nếu đây được phép, whatIWillSend
sẽ có một giá trị được xác định không phải do bất kỳ quyết định ý thức từ phía bạn, nhưng bởi những gì đã xảy ra là trong bộ nhớ vào thời điểm đó. Nó có thể là null, nó có thể là một hợp lệ Tuple<String, String>[]
do trùng hợp ngẫu nhiên (nhưng không phải là một trong những bạn muốn sử dụng!), nó có thể là Dictionary<int, List<string>>
mà thời gian chạy bây giờ sẽ nghĩ là thực sự là một Tuple<String, String>[]
(có loại an toàn của toàn bộ hệ thống), nó có thể là một phần tư của một cấu trúc decimal
. (Trong các ngôn ngữ cho phép những thứ như vậy, nó cũng có thể là một giá trị nổi tiếng mà các trình gỡ rối cho các ngôn ngữ đó được đặt trong những trường hợp này một cách chính xác để giúp tìm ra các lỗi do nó gây ra).
Đó là điều gần nhất mà chúng tôi có thể truy cập vào thuộc tính không có giá trị. Lưu ý rằng:
- Nó vẫn có giá trị, không phải là giá trị có ý nghĩa.
- Chúng tôi không được phép thực hiện việc này trong C#.
Nguồn
2012-01-27 14:49:31
+1 cho "tên không thể nói" :) –