对象数据类型是否有默认值
本文关键字:默认值 是否 数据类型 对象 | 更新日期: 2023-09-27 18:00:55
我有方法重载问题,我在以前的文章中已经问过这个问题。经过一些反馈和研究,我确信我需要默认在我的方法中传递的一些值。
我的问题是:对象数据类型是否有默认值?如果是,请提供一个例子。
以下是默认string
和int
参数的示例:
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)
有关我的代码副本,请参阅:OP
可选object
参数的默认值只能使用null
-或等效的default(object)
。没有其他类型为object
的编译时常量。我有点惊讶,你不能使用字符串文字,因为string
可以隐式转换为object
,但编译器阻止了这一点:(
说了这么多,如果你背着编译器,可以做得更多。。。可以使用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);
}
}
不过,我建议不要这样做——这有点违背事物的精神。。。
对象类型的默认值为null,检查
对于其余部分,请检查此