一周学会C#(函数一)
C#才鸟(QQ:249178521)
1.前言
· C#不支持全局函数
w 所有的函数必须在类内部声明
· 无源文件和头文件之分
w 所有的函数必须声明的时候被实现
int NotAllowed() //错误,C#没有全局函数
{
...
}
sealed class Methods
{
void Inline()
{ ...
}
void Error()
{ ...
}; //错误,函数不能有结尾分号
int AlsoError(); //错误,函数必须声明的时候被实现
}
和Java一样,C#不允许有全局函数。所有的函数必须在类或结构内实现。函数是类或结构的成员,函数也被称为方法。
C#允许可以在类的声明中加入结尾分号,例如:
sealed class Methods
{
...
};//可以有结尾分号
但是,C#不允许在函数的声明中加入结尾分号,例如:
sealed class Methods
{
void NotAllowed() {...} ; //错误,函数不能有结尾分号
}
2.声明函数
· 函数参数列表
w 各参数以逗号隔开
w 参数必须命名
w 没有参数时括号不能省略
sealed class Methods
{
void Error(float) //错误,参数没有命名
{ ...
}
void NoError(float delta)
{ ...
}
int Error(void) //错误,无参数时不允许使用void
{ ...
}
int NoError()
{ ...
}
}
3. 值型参数
· 一般的函数参数是实参的一个拷贝
w 实参必须预先被赋值
w 实参可以是常量类型
sealed class ParameterPassing
{
static void Method(int parameter)
{
parameter = 42;
}
static void Main()
{
int arg = 0;
Console.Write(arg); //结果为0
Method(arg);
Console.Write(arg); //结果为0
}
}
(注:为了叙述的方便,以后所出现的“参数”这个词均指函数参数,也就是所谓的形参)
没有被ref 或 out修饰的函数参数是一个值型参数。值型参数只有在该参数所属的函数被调用的时候才存在,并且用调用时所传递的实参的值来进行初始化。当函数调用结束时,值型参数不复存在。
只有被预先赋值的实参才能被传递给值型参数,例如:
int arg; // arg没有被赋初值
Method(arg);//错误,实参必须预先赋初值
传递给函数的实参可以是纯粹的数而不是变量,例如:
Method(42);
Method(21 + 21);