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"
;
}
}
- C# 方法
- C#方法
- C#方法
- C#方法
- c#方法
- c# 方法
- C# 方法
- C# 方法
- c#方法-分方法
- c#方法-虚方法
- c# 隐藏方法、重写方法
- c#方法之 实例方法
- C#调用DLL方法
- C# - Oracle数据库连接方法
- C#中的条件方法
- C#常用方法
- C#动态方法调用
- C#常用函数、方法
- Shiro? Kuro?
- Java Instanceof
- 欧几里德算法求最大公约数和最小公倍数
- Protel99SE里面自带的PCB Footprints.lib不见了怎么办?
- LA 2531 The K-League
- C#方法
- [leetcode] Trapping Rain Water
- 平等对待第三方的“微内核+插件”设计思想
- 二个变量的值互换
- 校验和算法
- 软件设计能力提升之设计匠艺
- iOS保存数据的4种方式
- Palindrome Partitioning
- 黑马程序员_高新技术之javaBean,注解,类加载器