c# - 在c#中使用[可选]参数后如何知道它是否由调用方法给出?
问题描述
我想知道参数 b 是否由调用方法提供,以便我可以根据它在方法的定义中设置它。因为这里总是有“b”的默认值 0,但我想区分用户调用 cc(5,0) 和 cc(5)。
有什么办法知道吗?
class Program
{
static void Main(string[] args)
{
var c= cc(5);
}
public static int cc(int a, [Optional] int b)
{
int c=0;
//if(b is provided)
c = a * b;
//else()
c =a*a;
return c;
}
}
解决方案
你不能,通过那个机制。即使你使用int? b = null
了,调用者也可以明确指定null
。要知道,您必须使用重载而不是可选参数,例如:
public static int cc(int a) => cc(a, 0, false);
public static int cc(int a, int b) => cc(a, b, true);
private static int cc(int a, int b, bool bSpecified) // could also use int? here
{...}
推荐阅读
- javascript - 变量的值未正确作为参数传递给方法
- css - 调整浏览器大小时,如何优先显示首先显示的列?
- pine-script - 从 pine script v 2 到版本 4 的 Tradingview 指标
- r - 如何在 aod 中通过 betabin 对模型进行事后测试(成对比较)?
- python - 有没有办法让我在 pandas DataFrame 中找到值的索引/位置?(Python)
- python - ImportError:无法从“requests_oauthlib”导入名称“OAuth1Session”
- javascript - 如何在何时修复列位置in row 被切换为隐藏/显示,无/阻止
我的 2x2 表中的列数根据选择中选择的值(1 或 2)扩展或收缩。目前,随着列的增加或减少,屏幕上的列位置会发生很大变化。无论一行出现多少列,如何修复屏幕上的列?