gpt4 book ai didi

C# 可选参数/多个必需

转载 作者:行者123 更新时间:2023-11-30 13:55:51 24 4
gpt4 key购买 nike

是否可以同时获得对 2 个可选参数的要求?这是一个例子:

public void ParamChoise(string A, bool B = false, string C = "Y")
{
// Stuff here
}

如果 B 是可选的,我希望函数在 B 为真时要求 C。从我的逻辑来看是这样的:

public void ParamChoise(string A, (bool B = false, string C = "Y"))

谷歌搜索找不到任何东西。对我来说,一种可能的方法是:

        /// <summary>
/// If you want behaviour XXX to be enabled, please enter "C" for usage.
/// </summary>
/// <param name="A"></param>
/// <param name="C"></param>
public void ParamChoise(string A, string C = "Y")
{
// Stuff here
}

我当然可以给我的函数一个这样的注释,但是为一个不合逻辑的给定参数写一个注释对我来说感觉很糟糕。

这个案例可能是一个不好的例子,但我相信我以后会再次遇到这个问题。

非常感谢:)。

编辑以清除内容:
参数的可能组合:

  • 只有一个
  • A & (B & C)
  • 不是 A 和 B
  • 不是 A 和 C(因为如果需要 C,B 会给出分数)

最佳答案

我认为您需要旧方法 - 方法重载。

// b = true
public void ParamChoise(string A, string C)

// b = false
public void ParamChoise(string A)

他们应该调用你原作的私有(private)版本

private void ParamChoiseInternal(string A, bool B = false, string C = "")

您应该确保为这 2 个公共(public)方法指定一个能够准确传达其含义的名称 - 这将有助于程序员(我知道可能是您)为它们的当前状态调用正确的方法。


更新后

同上,名称反射(reflect)需求,你应该仍然可以调用你原来的私有(private)方法。重载确保你的一致性

public void AOnly(string A)
public void AAndBAndC(string A, bool B, string C)

努力破译这两个:

NOT A & B WITHOUT C !!!
NOT A AND C (Because B gives the point if C is needed)

关于C# 可选参数/多个必需,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719312/

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