C# 函数
1,传值和传引用
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string a = "NiHao";
SayAWord(a);//传值
Console.WriteLine("This Word is {0}", a);
SayAWordAndEditWord(ref a);//传引用
Console.WriteLine("This Word is {0}", a);
}
static void SayAWord(string word)//值参数
{
Console.WriteLine(word);
word = "hahaha";
}
static void SayAWordAndEditWord(ref string word) //引用参数
{
Console.WriteLine(word);
word = "hahaha";
}
}
}
运行结果:
注意:ref参数使用前必须初始化,ref引用必须变量 const int myNumber = 5; myNumber 就不行,因为是常数。
2,返回的另外一种方式。
除了用return方式返回值外,还可以用out方式返回调用结果
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string a = "NiHao";
string b;
SayAWord(a,out b); //out方式可以不用初始化变量哦
Console.WriteLine("This Word is {0}", a);
SayAWordAndEditWord(ref a);
Console.WriteLine(b);
Console.WriteLine("This Word is {0}", a);
}
static void SayAWord(string word,out string RtnValue)//不管是调用的时候还是定义的时候都不能忘了加上out字样,不然你就out咯!
{
Console.WriteLine(word);
word = "hahaha";
RtnValue = "OK";
}
static void SayAWordAndEditWord(ref string word) //引用参数
{
Console.WriteLine(word);
word = "hahaha";
}
}
}
运行结果:
3,使用委托来调用函数
委托是一种可以把引用存储为函数的类型。委托的声明类似于函数,但不带函数体,且要使用delegate关键字,委托的声明指定了一个函数签名,其中包含一个返回类型和参数列表。在定义了委托后,就可以声明该委托类型的变量。接着把这个变量初始化为与委托有相同签名的函数引用。之后,就可以使用委托变量调用这个函数,就像该变量是一个函数一样。有了引用函数的变量以后,还可以执行不能用其他方式完成的操作。例如:可以把委托变量作为一个参数传递给一个函数,这样,该函数就可以使用委托调用它引用的任何参数,而且在运行之前无需知道调用的是哪个函数。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
delegate void ProcessDelegate(string temp);//委托的声明
static void Main(string[] args)
{
string a = "My PC";
ProcessDelegate process;//声明委托类型的变量
process = new ProcessDelegate(SayOK);
process(a);
process = new ProcessDelegate(SayNo);//动态改变引用的函数。
process(a);//无论委托引用的是什么函数调用方式都一样。
}
static void SayOK(string word)
{
Console.WriteLine(word+" is OK");
}
static void SayNo(string word) //引用参数
{
Console.WriteLine(word + " is No");
}
}
}
运行结果:
注意:委托有很多用途,他们的大多数用途主要与事件处理有关。

浙公网安备 33010602011771号