对象数据类型是否有默认值

本文关键字:默认值 是否 数据类型 对象 | 更新日期: 2023-09-27 18:00:55

我有方法重载问题,我在以前的文章中已经问过这个问题。经过一些反馈和研究,我确信我需要默认在我的方法中传递的一些值。

我的问题是:对象数据类型是否有默认值?如果是,请提供一个例子。

以下是默认stringint参数的示例:

public void ExampleMethod(int required, string optionalstr = "default string",
    int optionalint = 10)

有关我的代码副本,请参阅:OP

对象数据类型是否有默认值

可选object参数的默认值只能使用null-或等效的default(object)。没有其他类型为object的编译时常量。我有点惊讶,你不能使用字符串文字,因为string可以隐式转换为object,但编译器阻止了这一点:(

说了这么多,如果你背着编译器,可以做得更多。。。可以使用DefaultParameterValueAttributeOptionalAttribute创建具有字符串和数值的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,检查

对于其余部分,请检查此