C#方法

来源:互联网 发布:lnk是什么软件 编辑:程序博客网 时间:2024/05/26 12:56

方法与参数修饰符

方法可以有参数,也可以有返回值。

方法可以在类或结构范围内实现(也可以在接口中定义命名),可以被各种修饰符(public、virtual、internal、new等)修饰以限定方法的行为。

方法的基本格式为:修饰符 返回值 方法名(参数){...}

C#参数修饰符

C#有一些控制参数是如何传入方法体中的关键字。即C#参数修饰符:

(无) :如果一个参数没有使用参数修饰符,则认为它是按值传递给方法体的。方法体收到原始数据的一个副本(copy)。

out:输出参数,传入的参数需要在方法体中被赋值,是按引用传递给方法体的。若在方法体中未被赋值会报编译器错误。

ref:参数按引用传递。

params:可以在一组可变数量的数组参数作为单独的逻辑参数传递给方法体。

默认的参数传递(无参数修饰符):

static int Add(int a,int b)

{

int ret=a+b;

a=10;b=20;

return ret;

}

static void Main(string[] args)

{

int a=1,b=2;

int c=Add(a,b);

Console.WriteLine("a={0};b={1}",a,b);

Console.ReadLine();

}

最后输出为:a=1;b=2

out修饰符

out修飾符的確有一個很有用的用途:通過它,調用者只使用一次方法調用就能獲得多個返回值。

static void FillValues(out int a,out string b,out bool c)

{ a=1;b="bruce wong";c=true; }

static void Main(string[] args)

{

int a;string str;bool c;

FillValues(a,b,c);

Console.WriteLine("a={0},b={0},c={0}",a,b,c);

Console.ReadLine();

}

最后结果为:a=1,b=bruce wong,c=true

注意:输出参数必须在退出方法前被赋值,否则会导致编译错误。

ref修饰符

输出参数与引用参数都是按值类型传递的,但它们是有区别的:

1.输出参数不需要在它们被传递给方法前赋值,因为方法在退出之前会给输出参数赋值。

2.引用参数必须在被传递入方法之前被赋值,因为是在传递一个已存在的变量的引用。如果不赋值,相当于对一个为赋值的局部变量进行操 作。

static void SwapStrings(ref a,ref b)

{ string temp=a; a=b; b=temp; }

static void Main(string[] args)

{ string a="First",b="Second";

SwapStrings(a,b);

Console.WriteLine("a={0},b={1}",a,b);

Console.ReadLine();

}

最后结果为:a=Second,b=First

params修饰符

params关键字可以把可变数组的参数(相同类型)作为单个逻辑参数传给方法。调用者可以传入强类型数组或以逗号分隔的项列表,以 params关键字标记的参数就可以被处理。

注意:方法只支持一个params参数,且必须位于参数列表中最后一个。

static int Average(params int[] args)

{

int sum=0;

if(args.Length==0)

return sum;

for(int i=0,i<args.Length,i++)

{

sum+=args[i];

}

return (sum/args.Length);

}

static void Main(string[] args)

{

 Console.WriteLine("Average is {0}",Average(1,2,3,4,5,6,7,8,9));

int[] param={10,9,8}

Console.WriteLine("Average is {0}",Average(param));

Console.ReadLine();

}

方法重载

当定义一组名称相同的成员是,如果它们的参数数量(参数类型)不同,这样的成员就叫被重载。

int Add(int a,int b){return a+b;}

double Add(double a,double b){return a+b;}

long Add(long a,long b){return a+b;}

注意:只有返回值不同是不可以重载的。

命名参数

命名参数是把参数附上参数名称,这样在调用方法的时候不必按照原来的参数顺序填写参数,只需要对应好参数的名称也能完成方法。

?
class Program
    {
        /// <summary>
        /// 可选参数  命名参数
        /// </summary>
        static void Main(string[] args)
        {
            Console.WriteLine(ShowComputer("i3 370M","2G","320G"));
            Console.WriteLine(ShowComputer(disk:"320G", cpu: "i3 370M", ram: "2G"));
            Console.Read();
        }
 
        private static string ShowComputer(string cpu,string ram,string disk)
        {
            return "My computer ... \nCpu:" + cpu + "\nRam:" + ram + "\nDisk:" + disk + "\n";
        }
    }
可选参数

可选参数是.NET4中新添加的功能,应用可选参数的方法在被调用的时可以选择性的添加需要的参数,而不需要的参数由参数默认值取代。

?
class Program
    {
        /// <summary>
        /// 可选参数  命名参数
        /// </summary>
        static void Main(string[] args)
        {
            Console.WriteLine(ShowComputer());
            Console.WriteLine(ShowComputer("P5300","1G"));
            Console.Read();
        }
 
        private static string ShowComputer(string cpu = "i3 370M",string ram = "4G",string disk = "320G")
        {
            return "My computer ... \nCpu:" + cpu + "\nRam:" + ram + "\nDisk:" + disk + "\n";
        }
    }


原创粉丝点击