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";
        }
    }
}
 

运行结果:

tmp47

注意: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";
        }
    }
}

运行结果:

tmp51

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");
        }
    }
}

运行结果:

tmp62

注意:委托有很多用途,他们的大多数用途主要与事件处理有关。

原文地址:https://www.cnblogs.com/ysz12300/p/5283314.html