gpt4 book ai didi

c# - OptionalAttribute 参数的默认值?

转载 作者:可可西里 更新时间:2023-11-01 03:10:22 25 4
gpt4 key购买 nike

MSDN 的 VS2010 Named and Optional Arguments (C# Programming Guide)向我们介绍了 C# 中的可选参数,显示了我期望的代码:

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

好的,但它还说:

You can also declare optionalparameters by using the .NETOptionalAttribute class.OptionalAttribute parameters do notrequire a default value.

我读了MSDN's OptionalAttribute page ,并完成了在线搜索(这表明很多人声称 C# 无法使用 OptionalAttribute 参数——我猜这些评论是在 C# 4 之前做出的?),但我找不到两个问题的答案:

如果我使用 OptionalAttribute 将 C# 参数定义为可选:

  1. 如果我调用该方法但不指定该参数的值,将使用什么值?
  2. 该值是在编译时还是运行时求值?

最佳答案

规则是这样的:

请注意,除了 object 类型的参数之外的所有情况, 它相当于 default(T) .

我有点惊讶,因为C# 4.0 specification没有说明结果会是什么,我希望它会在那里。

此外(如 indicated by Scott Rippey in the comments ),这是在编译时评估的,这不是运行时操作,这意味着如果您在其他已部署的程序集中调用了此方法,并且您更改了可选值,传递给该方法的默认值将不会改变,除非您编译在程序集中针对该方法进行调用的所有内容。

关于c# - OptionalAttribute 参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416216/

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