Câu hỏi nhanh:Tại sao giá trị của loại null không thể được sử dụng làm tham số mặc định với kiểu double?
MSDN - Named and Optional Arguments (C# Programming Guide) bang rõ ràng rằng
"đối số tùy chọn cho phép bạn bỏ qua đối số cho một số thông số Cả hai kỹ thuật có thể được sử dụng với các phương pháp, chỉ mục, constructors, và các đại biểu. . "
Vì vậy, thay vì điều này:
class MyClass
{
//..
public MyClass() { // Empty Constructor's Task }
public MyClass(SomeType Param1) { // 2nd Constructor's Task }
public MyClass(SomeType Param1, SomeType Param2) { // 3rd Constructor's Task }
}
tôi sẽ có thể làm điều này:
class MyClass
{
//..
public MyClass(SomeType Param1 = null, SomeType Param2 = null)
{
if (Param1)
{
if (Param2)
{
// 3rd constructor's Task
}
else
{
// 2nd constructor's Task
}
}
else
{
if (!Param2)
{
// Empty constructor's Task
}
}
}
}
Sau đó, tại sao điều này không hoạt động:
public MyClass(double _x = null, double _y = null, double _z = null, Color _color = null)
{
// ..
}
Nói cho tôi :
Một giá trị của kiểu "vô giá trị" 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õ 'đúp'
Nếu có một điều tôi đã học được, đó là downvoter sẽ không bao giờ thấy câu hỏi này bởi vì anh ấy sẽ không quay lại bài viết của bạn: D – Vucko
@Vucko nhưng sau đó người dùng chuyên nghiệp như bạn sẽ đến và xem nó, sẽ biết rằng nó không công bằng bởi vì không có gì sai và điều này ** hữu ích, và upvote nó;) –
Vâng, tôi nghĩ rằng đó là một câu hỏi hay, và upvoted nó: D – Vucko