我有方法过载问题,我在之前的帖子中已经问过这个问题。经过一些反馈和研究后,我确信我需要默认一些在我的方法中传递的值。
我的问题是:对象数据类型是否有默认值?如果,请举例说明。
以下是默认string
和int
参数的示例:
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)
有关我的代码的副本,请参阅:OP
答案 0 :(得分:2)
可用于可选object
参数默认值的唯一值是null
- 或等效地default(object)
。没有其他类型object
的编译时常量。鉴于string
可隐式转换为object
,我不能使用字符串文字,我感到有些惊讶,但编译器会阻止:{/ p>
说完所有这些后,如果你回到编译器的后面,可以做更多的事情......你可以使用DefaultParameterValueAttribute
和OptionalAttribute
使用字符串和数值创建类型为object
的可选参数。例如:
using System;
using System.Runtime.InteropServices;
class Test
{
static void Main(string[] args)
{
Foo(); // Prints 5 test
}
static void Foo([Optional, DefaultParameterValue(5)] object x,
[Optional, DefaultParameterValue("test")] object y)
{
Console.WriteLine("{0} {1}", x, y);
}
}
我建议不要这样做 - 这有点违背事物的精神......
答案 1 :(得分:0)