串?对于方法中的C#

时间:2012-10-25 09:52:05

标签: c#

我想要像tkis“int?”这样的东西但是对于字符串。你知道如果我不给参数数据我就不会有错误。我需要一些关于这个问题的想法。

Example(4);

public void Example(int, string?){} 

对于你们所有人,我给予积分。感谢帮助。主题[已关闭]:)

5 个答案:

答案 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
}