2009-03-12 42 views
9

Duplicate Câu hỏiNullable Phương pháp luận cứ trong C#

Passing null arguments to C# methods

Tôi có thể làm điều này trong C# cho Net 2.0?

public void myMethod(string astring, int? anint) 
{ 
//some code in which I may have an int to work with 
//or I may not... 
} 

Nếu không, có điều gì tương tự tôi có thể làm không?

+0

Tôi đã thực hiện tìm kiếm và bản sao không xuất hiện hoặc có thể đã trả lời câu hỏi này. Cảm ơn tất cả. –

Trả lời

17

Vâng, giả sử bạn thêm chữ V cố ý và bạn thực sự có nghĩa là:

public void myMethod(string astring, int? anint) 

anint bây giờ sẽ có một tài sản HasValue.

7

Trong C# 2.0, bạn có thể thực hiện;

public void myMethod(string astring, int? anint) 
{ 
    //some code in which I may have an int to work with 
    //or I may not... 
} 

Và gọi phương thức như

myMethod("Hello", 3); 
myMethod("Hello", null); 
14

Phụ thuộc vào những gì bạn muốn đạt được. Nếu bạn muốn để có thể thả các tham số anint, bạn phải tạo ra một tình trạng quá tải:

public void myMethod(string astring, int anint) 
{ 
} 

public void myMethod(string astring) 
{ 
    myMethod(astring, 0); // or some other default value for anint 
} 

Bây giờ bạn có thể làm:

myMethod("boo"); // equivalent to myMethod("boo", 0); 
myMethod("boo", 12); 

Nếu bạn muốn vượt qua một int nullable, tốt, nhìn thấy các câu trả lời khác. ;)

+0

+1 đề xuất tốt để sử dụng đa hình –

+3

Đó không phải là đa hình –

+1

@Garry, vâng quyền của bạn không. –

Các vấn đề liên quan