函数参数往往有不同的用途:在大多数情况下,它们只是内部逻辑用于产生结果/效果的只读指示,但有时它们会被调用函数(初始化函数,排序算法等)修改。 / p>
我想知道是否有一个最佳实践在代码中显示该函数将修改一个参数(除了在上面明确说明这一点之外写一条评论)?像广泛认可的编码惯例一样。
使用C ++我对每个参数都使用'const'关键字,这个参数不会被函数修改,但是C#不允许使用const或'readonly'。缺少'const'并不意味着该参数无论如何都要由函数更新。
由于
答案 0 :(得分:1)
实际上在C#值类型参数(和字符串,由于不变性)是" const"默认情况下,除非您使用out
或ref
关键字明确标记它们。至于引用类型,函数只能修改参数引用的对象,而不能修改引用本身。
此外,那些out
和ref
关键字是编译器的提示,它分析代码流并且不允许使用" uninitlized"变量。所以。即如果你声明方法:
void DoSomething(int i) { ... }
然后尝试从以下代码中调用它:
int x;
DoSomething(x);
编译器将禁止,因为x
在通话时将未初始化。另一方面:
void DoSomething(out int i) { ... i = 10; ... }
现在允许以下调用:
int x;
DoSomething(out x);
因为编译器现在知道DoSomething
将初始化x。请注意,DoSomething
不会编译,除非它包含一个statament,它会为i
参数指定一些值。