例如:
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个门,是多层的”。删除一个单词“true”只是一个小问题,但可以模拟这个吗?
答案 0 :(得分:2)
没有; C#不支持这样的语法。
如果您有一个名为multi_story
的本地变量?
答案 1 :(得分:0)
你可以写:
new building(doors: 4);
甚至:
new building(4);
如果未指定参数,则默认为其指定的默认值。因此multi_story
将false
。{{1}}
答案 2 :(得分:0)
只要函数的签名各不相同,您就可以创建多个具有相同名称的函数/方法。
e.g。
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
}