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#不支持这种语法。
如果您有一个名为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
}