【问题标题】:C# - How to skip parameters with default values?C# - 如何跳过具有默认值的参数?
【发布时间】:2012-08-10 12:18:34
【问题描述】:

考虑以下方法示例:

public void MyMethod (string par1, bool par2 = "true", string par3="")
{
}

现在假设我调用 MyMethod 并将 par3 的值设置为“IamString”。

如果不将 par2 的值设置为 true 或 false,我怎么能做到这一点?

我基本上想将 par2 值保留为默认值。

我问这个是因为在 Flash 的 ActionScript 中可以通过使用关键字 default 来做到这一点,所以我可以调用 MyMethod ("somestring", default, "IamString") 和 par2 将是解释为 true,这是它的默认值。我想知道在 C# 中是否也可以。

【问题讨论】:

标签: c# parameter-passing optional-parameters


【解决方案1】:
public void MyMethod (string par1, bool par2 = "true", string par3=""){}
Myclass.MyMethod(par1:"par1", par3:"par3");

顺便说一句,这行不通:bool par2 = "true"

string par2 = "true"

bool par2 = true

谈到默认值,您也可以使用它来获取特定类型的默认值:

default(T)

【讨论】:

  • 谢谢!是的,你是对的 bool par2 = "true" 不起作用。这是我在尝试布局一个简单示例时犯的一个错误。
  • 是的,它只是不允许我,因为您最近编辑了您的答案。我会在 1 分钟内接受。
【解决方案2】:

你可以通过名称来指定这个参数:

instance.MyMethod( "Hello", par3:"bla" );

看看here

还有一个错误:

bool par2 = true

是正确的..

【讨论】:

  • 也感谢您的回答。
  • 您的回答对 SeToY 的同样有用,但我会接受他的,因为我首先发现了它。不过,谢谢你并竖起大拇指!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 2020-02-25
  • 2019-10-05
  • 1970-01-01
  • 2023-03-27
  • 2016-10-30
  • 1970-01-01
相关资源
最近更新 更多