Я скучаю по этим милым необязательным аргументам со времен, когда я программировал на C ++ больше. Я знаю, что они не существуют в C #, но мой вопрос Почему .
Я думаю, перегрузка методов - плохая замена, которая очень быстро запутывает вещи.
void foo(int x,int y,int z=0){
//do stuff...
}
//is so much more clean than
void foo(int x,int y){
foo(x,y,0);
}
void foo(int x,int y,int z){
//do stuff
}
Я просто не понимаю, в чем причина. У компилятора C #, очевидно, не будет проблем с поддержкой этого, просто Microsoft решила не поддерживать его.
Почему, когда C # был разработан, они не хотели поддерживать необязательные аргументы?