我想要像tkis“int?”这样的东西但是对于字符串。你知道如果我不给参数数据我就不会有错误。我需要一些关于这个问题的想法。
Example(4);
public void Example(int, string?){}
对于你们所有人,我给予积分。感谢帮助。主题[已关闭]:)
答案 0 :(得分:11)
这不可用,因为string
已经是引用类型,因此已经可以为空。 ?
后缀是Nullable<T>
的语法糖,因此int?
相当于Nullable<int>
...而Nullable<T>
的约束为where T : struct
,即T
必须是不可为空的值类型...不包括string
。
换句话说,你可以写
public void Example(int x, string y)
{
if (y == null)
{
...
}
}
请注意,这与使其成为可选参数不同。传递null
值仍然传递一个值。如果你想把它作为一个可选参数你也可以这样做:
public void Example(int x, string y = "Fred")
...
Example(10); // Equivalent to Example(10, "Fred");
答案 1 :(得分:4)
在C#4.0中,您可以通过编写
来使用可选参数public void Example (int a, string b = null) {}
否则,您可以重载方法
public void Example (int a) {}
public void Example (int a, string b) {}
答案 2 :(得分:4)
字符串类型默认情况下为null,您不需要使其可为空,因为它已经是引用类型。你可以这样使用它。
public void Example(int i, string s)
{
}
用null调用
Example(null, null);
答案 3 :(得分:4)
System.String是一个引用类型,因此您可以在不声明变量为空的情况下将String变量赋值为null。
答案 4 :(得分:2)
您是否需要为字符串参数指定默认值?
e.g。
Example(4);
public void Example(int x, string y = null)
{
// etc
}