gpt4 book ai didi

c# - 我可以在 C# 4.0 中指定默认的 Color 参数吗?

转载 作者:IT王子 更新时间:2023-10-29 04:46:56 24 4
gpt4 key购买 nike

这是一个示例函数:

public void DrawSquare(int x, int y, Color boxColor = Color.Black)
{
//Code to draw the square goes here
}

编译器不断给我错误:“boxColor”的默认参数值必须是编译时常量

我试过了

Color.Black, 
Color.FromKnownColor(KnownColor.Black), and
Color.FromArgb(0, 0, 0)

如何让 Color.Black 成为默认颜色?另外,我不想使用字符串 Black 来指定它(我知道这会起作用)。我想要 Color.Black 值。

最佳答案

这样做:

void foo(... Color boxColor = default(Color))
{
if(object.Equals(boxColor, default(Color))) boxColor = Color.Black;

// ...
}

顺便说一句:我喜欢使用 object.Equals 静态方法,因为它是编写相等比较的一致方法。对于 string 等引用类型,str.Equals("abc") 可以抛出 NRE,而 string.Equals(str, "abc"[,StringComparison. ___]) 不会。 Color 是一种值类型,因此永远不会为 null,但最好在代码风格上保持一致,尤其是在零附加成本的情况下。显然,这不适用于 int 甚至 DateTime 等原语,其中 == 清楚地说明/传达了数学相等性比较。

或者,使用可空值(归功于 Brian Ball 的回答):

void foo(... Color? boxColor = null)
{
if(boxColor == null) boxColor = Color.Black;

// ...
}

关于c# - 我可以在 C# 4.0 中指定默认的 Color 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454336/

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