2012-09-02 12 views
5

Tôi đang cố gắng chuyển đối số tùy chọn cho hàm hình học, được gọi là offset, có thể hoặc không thể được chỉ định, nhưng C# không cho phép tôi thực hiện bất kỳ thao tác nào sau đây. Có cách nào để hoàn thành nó không?Tại sao không thể sử dụng điểm và hình chữ nhật làm thông số tùy chọn?

  • Null như mặc định

    Lỗi: Một giá trị của loại '' không thể được sử dụng như một tham số mặc định vì không có chuyển đổi tiêu chuẩn để gõ 'System.Drawing.Point'

    public void LayoutRelative(.... Point offset = null) {} 
    
  • rỗng như mặc định

    Lỗi: mặc định tham số giá trị cho 'bù đắp' phải là một thời gian biên dịch liên tục

    public void LayoutRelative(.... Point offset = Point.Empty) {} 
    

Trả lời

11

Nếu giá trị mặc định của bạn không đòi hỏi bất kỳ khởi đặc biệt, bạn không cần phải sử dụng một loại nullable hoặc tạo quá tải khác nhau. Bạn có thể sử dụng default keyword:

public void LayoutRelative(.... Point offset = default(Point)) {} 

Nếu bạn muốn sử dụng một loại nullable thay vì:

public void LayoutRelative(.... Point? offset = null) 
{ 
    if (offset.HasValue) 
    { 
     DoSomethingWith(offset.Value); 
    } 
} 
+0

Chỉ cho tôi làm thế nào để sử dụng cách nullable và tôi sẽ chấp nhận câu trả lời của bạn. Người vừa mới xóa câu trả lời của mình. –

+0

Cảm ơn rất nhiều. –