MSDN nói về Optional Parameters cho Visual Basic
Đối với mỗi tham số tùy chọn, bạn phải chỉ định một hằng số biểu thức là giá trị mặc định của thông số đó. Nếu biểu thức đánh giá là Không có gì, giá trị mặc định của loại dữ liệu giá trị được sử dụng làm giá trị mặc định của tham số .
Vì vậy, bạn không thể sử dụng cú pháp đó, thay vào đó bạn có thể viết một cái gì đó như thế này
Private Sub Test(a As Integer, Optional c As Color = Nothing)
If c = Nothing Then
c = Color.Black ' your default color'
End If
......
End Sub
Cùng mã viết bằng C# như sau
private void Test(int a, Color c = default(Color))
{
if (c.IsEmpty)
c = Color.Black;
}
Trong C# bạn không thể kiểm tra một loại Giá trị (như Màu sắc, Điểm, Kích thước, ...) đối với giá trị null. Các kiểu này không bao giờ rỗng, nhưng chúng có giá trị mặc định cho kiểu- (Giống như 0 cho số nguyên), vì vậy, nếu bạn cần chuyển một tham số tùy chọn cho một kiểu giá trị, bạn có thể tạo nó với từ khóa new
. thích sử dụng làm mặc định hoặc sử dụng default
keyword và để khung công tác quyết định giá trị nào là mặc định cho loại đó. Nếu bạn để khung này chọn thì thuộc tính IsEmpty sẽ là đúng.
Đó là lạ rằng trong C# trình biên dịch sẽ không cho phép tôi tuyên bố "Màu c = null" khi tuyên bố tham số. Nó phàn nàn về việc không thể gán null cho kiểu giá trị. Tôi phải nói "Color c = new Color()" và sau đó trong bài kiểm tra mã của tôi cho "c.IsEmpty". –
@BillGregg đã thêm phiên bản C# – Steve