3

我想要像 tkis "int?" 这样的东西。但对于字符串。你知道,如果我不给参数提供数据,我就不会出错。我需要一些想法来解决这个问题。

Example(4);

public void Example(int, string?){} 

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

4

5 回答 5

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");
于 2012-10-25T09:53:00.690 回答
4

在 C# 4.0 中,您可以通过编写来使用可选参数

public void Example (int a, string b = null) {}

否则,您可以重载该方法

public void Example (int a) {}
public void Example (int a, string b) {}
于 2012-10-25T09:52:50.677 回答
4

string 类型默认为 null,您不需要将其设为 null,因为它已经是引用类型。你可以这样使用它。

public void Example(int i, string s)
{

} 

用 null 调用它将是

Example(null, null);
于 2012-10-25T09:52:52.203 回答
4

System.String 是一种引用类型,因此您可以在不声明该变量可为空的情况下将其分配给字符串变量 null。

于 2012-10-25T09:54:04.953 回答
2

你需要给字符串参数一个默认值吗?

例如

Example(4);

public void Example(int x, string y = null)
{
    // etc
} 
于 2012-10-25T09:54:44.953 回答