2012-10-23 39 views
7

tôi đã thực hiện một lỗi đánh máy và Visual Studio đã không đánh dấu nó như là một lỗi:`Nullable <T> là gì? '?

void Method(Nullable<SpriteFont>? font = null) { }

font xuất hiện như SpriteFont?? ở đầu ra. Tôi vừa làm gì?

UPD: Xin lỗi, mọi người, tôi đã không cố gắng biên dịch nó, nó chỉ không hiển thị như là một lỗi cho đến khi tôi đã làm. Tuy nhiên, nó là lạ mà nó trông giống như Type?? trong đầu ra.

Hơn nữa SpriteFont đã nullable, vì vậy tôi sẽ nhận được một lỗi nào :(

+9

Bạn đã xác định phông chữ là Nullable > – manman

+1

Tôi nghĩ loại chấp nhận giá trị null không thể được tạo thành nullable ... như lớp học. –

+0

@manman: đặt câu trả lời đó là một câu trả lời – zerkms

Trả lời

4

Tôi đã thử nó ở đây, chỉ là bây giờ ... và tôi không thể tái tạo những gì bạn sayd.

Tất cả câu nào dưới đây không biên dịch:

  • Nullable<int>? a = 1;
  • Nullable<Nullable<int>> b = 1;
  • Nullable<int?> a = 1;
  • void A(Nullable<Nullable<int>> a)
  • void A(Nullable<int>? a)
  • void A(Nullable<int?> a)

Sử dụng Visual Studio 2012, C# 4 hoặc 5 Tôi nghĩ rằng, .Net framework 4.5.

+2

@Vulcan: Không, tôi nghĩ đó là câu trả lời, bởi vì câu hỏi có vẻ sai. – Mehrdad

+2

@Vulcan: Không có câu trả lời cho một câu hỏi sai, hoặc báo cáo sai ... chỉ cần truy cập các ví dụ. –

+3

Đây thực sự là câu trả lời. Và khi câu trả lời về cơ bản nói "Tôi không biết làm thế nào bạn có được những gì bạn đã làm", câu hỏi thường là vấn đề :) –

4

Trình kiểm tra cú pháp của trình soạn thảo không gắn cờ nó là lỗi với dấu nháy màu đỏ. Không phải trình biên dịch.

Hai đoạn mã riêng biệt. Họ phải, mã kiểm tra cú pháp trong khi bạn đang gõ nó, trong bản chất luôn luôn bị hỏng, đòi hỏi một cách tiếp cận rất khác nhau.

+0

Đây là lời giải thích duy nhất! Nó cũng có nghĩa là câu hỏi đã được thực hiện mà không thực sự biên dịch mã. –