首页 > 代码库 > 函数----Beginning Visual C#
函数----Beginning Visual C#
<style></style>
更多相关文章,见本人的个人主页:zhongxiewei.com
当函数传递参数通过引用方式传递的时候,语法有所不同
// in cppvoid doubleVal(int &val) { // ...}int main() { int val = 20; doubleVal(val); cout << val << endl; // output: 40}
// in c sharpstatic void doubleVal(ref int val) // 使用ref进行标识{ val *= 2; }static void Main(string[] args){ int val = 20; doubleVal(ref val); Console.WriteLine(val); // output: 40}
out 关键字,在c++中没有相似的关键字或用法 out 关键字的使用方式和ref类似,但有两点不同,1)在使用ref参数的时候,传递没有赋值的参数是不合法的。无法通过编译。但是在使用out参数的时候是合法的。2)并且使用out参数的时候,该参数被当作没有赋值的,对该值的调用会发生编译错误。如下:
static void doubleVal(out int val){ val *= 2; // 想要使用val中的数值, // 但是val被认为是没有赋值的,因此出现编译错误 }static void Main(string[] args){ int val=3; doubleVal(out val); Console.WriteLine(val); // output: 40}
对于不定量参数输入的关键字为:param,具体实现如下:
static int sum(param int[] num) // 这里需要注意的是,param参数必须在参数列表的最后的位置{ int sumVal = 0; foreach (int n in num) { sum += n; } return sum;}
在c#中对变量作用域的检测更加的严格,比如类似下面的代码能够在c++中编译通过并成功运行,而在c#中则无法通过编译,由于在同一个作用域中调用了没有初始化的变量。
string text;for (int i=0; i<1; i++){ text = "hello";}Console.WriteLine(text); // in cpp: cout << text << endl;
函数重载和c++中的类似,但是由于c#中对于“引用”,引入了ref关键字,因此,对于引用参数和非引用的参数的函数在c#中也能够重载,这在c++中是不合理的。如:
// in c#static void showDouble(ref int val) {}static void showDouble(int val) {}// in cpp is errorvoid showDouble(int &val) {}void showDouble(int val) {}
在c#中关于函数,还有delegate
关键字,该关键字的含义用来创建一个能够用来表示其他函数的东东。这有点像c中的指针函数。如:
// in c#delegate double processDelegate(double param1, double param2);static double Multiply(double param1, double param2){ return param1 * param2;}static double Divide(double param1, double param2){ return param1 / param2;}static void Main(string[] args){ processDelegate process; process = new processDelegate(Multiply); Console.WriteLine("{0}", process(3, 4)); process = new processDelegate(Divide); Console.WriteLine("{0}", process(3, 4));}
// in cpp#include <iostream>using namespace std;int multi(int a, int b) { return a * b;}int add(int a, int b) { return a + b;}int main() { int (*fn)(int,int); fn = multi; cout << "multi " << fn(2,3) << endl; fn = add; cout << "add " << add(2,3) << endl;}
函数----Beginning Visual C#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。