gpt4 book ai didi

c# - c# 2.0 中可空值的默认值

转载 作者:IT王子 更新时间:2023-10-29 04:38:43 25 4
gpt4 key购买 nike

使用 C# 2.0,我可以像这样指定一个默认参数值:

static void Test([DefaultParameterValueAttribute(null)] String x) {}

由于此 C# 4.0 语法不可用:

static void Test(String x = null) {}

那么,值类型是否有 C# 2.0 等效项?例如:

static void Test(int? x = null) {}

以下尝试无法编译。

// error CS1908: The type of the argument to the DefaultValue attribute must match the parameter type
static void Test([DefaultParameterValueAttribute(null)] int? x) {}

// error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
static void Test([DefaultParameterValueAttribute(new Nullable<int>())] int? x) {}

最佳答案

不幸的是,旧版本的 C# 编译器不支持这一点。

C# 4.0 编译器对此进行编译:

public static void Foo(int? value = null)

进入:

public static void Foo([Optional, DefaultParameterValue(null)] int? value)

这实际上与您的第一次尝试相同(此外还添加了 OptionalAttribute),C# 2 编译器在使用 CS1908 时出错,因为该版本的编译器。

如果您需要支持 C# 2,在这种情况下,我建议改为添加一个重载方法:

static void Test()
{
Test(null);
}
static void Test(int? x)
{
// ..

关于c# - c# 2.0 中可空值的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com