c#空可选参数

本文关键字:参数 | 更新日期: 2023-09-27 18:18:32

例如:

void building(int doors, bool multi_story) {...}
or
void building(int doors = 1, bool multi_story = false) {...}
因此:

new building(4, true);
new building(1, false);
or
new building(doors: 4, multi_story: true);
new building();

这些东西工作得很好与空'类型?’也一样。然而,如果能做到这一点就太好了。

new building(doors: 4, multi_story:); // thanks SLaks for the correction

意思是"一切都是默认的,除了->有4扇门,是多层的"。删除一个单词"真"只是一件小事,但有可能模拟这一点吗?

c#空可选参数

不;c#不支持这种语法。

如果您有一个名为multi_story的局部变量,将会发生什么?

你可以这样写:

new building(doors: 4); 

甚至:

new building(4); 

如果不指定参数,则默认为其指定的默认值。所以这里的multi_story就是false

可以创建多个具有相同名称的函数/方法,只要每个函数的签名不同即可。

public void building() {...}
public void building(int doors) {...}
public void building(bool multiStory) {...}
public void building(int doors, bool multiStory) {...}

对于上面的第一个,我要做的是:

public void building()
{
    building(1); // call building passing default doors
}
public void building(int doors)
{
    building(doors, true); // call the building function passing the default story flag
}
public void building(bool multiStory)
{
    building (1, multiStory); // Call building function passing default doors and ms flag
}
public void building(int doors, bool multiStory)
{
    //final building function - deal with doors & story arguments.
}
注意,你可以对类对象的构造函数这样做,使用"this"关键字来调用下一个构造函数,类似于:
void building() : this(1) {}
void building(int doors) : this(doors, true) {}
void building(bool multiStory) :this(1, multiStory) {}
void building(int doors, bool multiStory){
    //do stuff
}