----------------------
Windows Phone 7手机开发、
.Net培训、期待与您交流! ----------------------
方法
功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,那一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了
定义语法:
[访问修饰符][static] 返回值类型 方法名([参数])
{
方法体;
} []括起来的可以省略
方法一般定义在类中
如果方法没有值,则返回值类型写void
如果方法没有参数,()不能省略
方法的调用:
如果是静态方法(由static修饰的)则使用
类名.方法名();
在类中调用本类的方法,可以只写
方法名();
非本类的则写
类名.方法名();
在类中写return; 立即跳出本方法
方法注释,在方法前连按三个/// 定义了方法注释后,Max后边所要输入的就会有提示
/// <summary>
/// 找出两个数中的最大数
/// </summary>
/// <param name="i">第一个数</param>
/// <param name="j">第二个数</param>
/// <returns>返回值</returns>
代码:
变量的作用域:
在方法中定义的变量为局部变量,其作用域从定义开始,到其所在的大括号结束为止
当被调用者想得到调用者方法中的变量时,则可以让调用者通过参数的形式给被调用者
参数
参数分为实参和形参
如:
public static void Test(int num) //形参 给num传过来的值叫做实参
{
}
在方法名后面的括号内定义变量,叫作这个方法的参数。
这里定义的变量用于接收调用者传过来的数据
注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致
代码:
当形参是数组的时候,传数组名 代码:
返回值
当调用者想访问我们方法中的变量时,可以通过返回值返回
例如:
string s=console.readline();
int i=convert.toint32("333");
为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值
只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值
注意: 一个方法只能有一个返回值
一旦一个方法有返回值,那么在这个方法中,就必须通过return语句返回一个值,并且这个值要与返回值类型是相同的
语法:
方法中的void需要改成要返回值的类型
如:
public static int Add() int为返回值类型
return 值;
代码:
一个变量一旦定义在方法外、类的里面,就叫做类的字段,这个变量就可以被本类的所有方法所访问,要注意,静态方法只能访问静态字段
代码:
out
实现步骤:
1.在方法的参数类型前加out,那么传参数的时候,也必须在num前加out,表明这个参数不是传入的,而是用来传出值的
2.如果参数是以out形式传入的,那么在传入前可以不赋初值
3.在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值
代码:
ref
跟out用法相同,不过out只能传出,ref是双向的,即可以传入,又可以传出
out用于传出值,在方法中必须对out修饰的参数进行赋值,ref想赋值就赋值,不想赋值也可以
参数前边如果什么都不加,叫做复制
如果加了out或ref 叫做一块使用同一个变量
这就相当于屏蔽了C语言中的指针
在传参数的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中的值也会相应改变
代码:
方法的重载:
一般在同一个类中,方法名相同,并且方法的参数的个数不同或者对应位置一的类型不同,才能枸成方法重载
注意:方法重载和返回值没有关系
代码:
随机数
产生一个m到n之间的的随机数
Random i = new Random();
int s=i.next(m,n+1);
括号中的数为最小能取到1,最大能取到99 1<=s<100
代码:
方法
功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,那一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了
定义语法:
[访问修饰符][static] 返回值类型 方法名([参数])
{
方法体;
} []括起来的可以省略
方法一般定义在类中
如果方法没有值,则返回值类型写void
如果方法没有参数,()不能省略
方法的调用:
如果是静态方法(由static修饰的)则使用
类名.方法名();
在类中调用本类的方法,可以只写
方法名();
非本类的则写
类名.方法名();
在类中写return; 立即跳出本方法
方法注释,在方法前连按三个/// 定义了方法注释后,Max后边所要输入的就会有提示
/// <summary>
/// 找出两个数中的最大数
/// </summary>
/// <param name="i">第一个数</param>
/// <param name="j">第二个数</param>
/// <returns>返回值</returns>
代码:
static void Main(string[] args)
{
ShowUI(); //调用方法 格式
int[] score = { 1, 3, 6, 23, 25, 23 };
for (int i = 0; i < score.Length - 1; i++)//外层循环控制趟数
{
for (int j = 0; j < score.Length - 1 - i; j++)//内层循环控制次数
{
if (score[j] < score[j + 1])
{
int temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
for (int i = 0; i < score.Length; i++)
{
Console.WriteLine(score[i]);
}
ShowUI();
Console.ReadKey();
}
/// <summary>
/// 定义了一个ShowUI方法,用来在主界面显示 ******************* 方法一定要定义在类中
/// </summary>
public static void ShowUI()
//也可写成 void ShowUI()
//ShowUI()里边的参数可以不写,但()不能不写 定义方法名一般首字母要大写
{
Console.WriteLine(" ******************** ");
}
变量的作用域:
在方法中定义的变量为局部变量,其作用域从定义开始,到其所在的大括号结束为止
当被调用者想得到调用者方法中的变量时,则可以让调用者通过参数的形式给被调用者
参数
参数分为实参和形参
如:
public static void Test(int num) //形参 给num传过来的值叫做实参
{
}
在方法名后面的括号内定义变量,叫作这个方法的参数。
这里定义的变量用于接收调用者传过来的数据
注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致
代码:
static void Main(string[] args)
{
int a = 5;
Test(a,3);
Console.ReadKey();
}
public static void Test(int i,int j)
{
Console.WriteLine("i+j={0}",i+j);
}
当形参是数组的时候,传数组名 代码:
static void Main(string[] args)
{
int[] aaa = { 1, 2 };
// 传参 Test(aaa); //*****************
int sum = Test(aaa); //***********8**********
Console.WriteLine(sum);
Console.ReadKey();
}
public static int Test(int[] numbers)
{
int sum = 0;
for (int i = 0; i < numbers.Length; i++)
{
sum += numbers[i];
}
return sum;
}
返回值
当调用者想访问我们方法中的变量时,可以通过返回值返回
例如:
string s=console.readline();
int i=convert.toint32("333");
为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值
只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值
注意: 一个方法只能有一个返回值
一旦一个方法有返回值,那么在这个方法中,就必须通过return语句返回一个值,并且这个值要与返回值类型是相同的
语法:
方法中的void需要改成要返回值的类型
如:
public static int Add() int为返回值类型
return 值;
代码:
static void Main(string[] args)
{
//判断是否为闰年
Console.WriteLine("请输入年份:");
int year = int.Parse(Console.ReadLine()); //int.parse 跟convert.toint32 作用相同
bool result = LeapYear(year); //要在Main方法中调用方法中的值,就必须用返回值,然后在Main方法中定义一个变量来接收返回值
if (result)
{
Console.WriteLine("闰年");
}
else
{
Console.WriteLine("不是闰年");
}
Console.ReadKey();
}
//是否为闰年的方法
public static bool LeapYear(int year) //bool 就为返回值类型
{
if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
{
return true; //要有返回值,方法中就必须将void改成所要返回值的类型
}
else
{
return false;
}
}
一个变量一旦定义在方法外、类的里面,就叫做类的字段,这个变量就可以被本类的所有方法所访问,要注意,静态方法只能访问静态字段
代码:
const double PI = 3.14; //方法不管是不是静态的,都可以访问常量 常量(const)不能定义成静态的。
static int a = 10; //这俩个变量就是定义在方法外、类的里面 静态方法要访问,前面就必须加 static 而非静态的方法即可以访问静态的,也可以访问非静态的
static int b = 20;
int c = 30;
static void Main(string[] args)
{
MyTest();
Console.ReadKey();
}
public static void MyTest() //如果参数中的变量名和方法外、类的里面的方法重名,则要写 program.变量名 提示为方法外、类的里面的方法
{
Console.WriteLine("{0}",a+b); //如果要访问int c=30; 中的c ,则方法中的静态修饰符就要去掉 ,如下:
}
public void MyFirst()
{
Console.WriteLine("{0}",a+b+c);
}
out
实现步骤:
1.在方法的参数类型前加out,那么传参数的时候,也必须在num前加out,表明这个参数不是传入的,而是用来传出值的
2.如果参数是以out形式传入的,那么在传入前可以不赋初值
3.在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值
代码:
static void Main(string[] args)
{
int num;
int word = Test(out num); //调用方法中的参数时也要加out,表示num用于接收a参数的返回值的
Console.WriteLine("num={0} word={1}",num,word);
Console.ReadKey();
}
public static int Test(out int a) //在方法中参数前加个out之后,a就不是往里边传值了,而是往外边反值
{
a = 20; //加了out之后,在方法中就必须对a进行赋值
return a;
}
ref
跟out用法相同,不过out只能传出,ref是双向的,即可以传入,又可以传出
out用于传出值,在方法中必须对out修饰的参数进行赋值,ref想赋值就赋值,不想赋值也可以
参数前边如果什么都不加,叫做复制
如果加了out或ref 叫做一块使用同一个变量
这就相当于屏蔽了C语言中的指针
在传参数的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中的值也会相应改变
代码:
static void Main(string[] args)
{
int i = 10;
Test(ref i);
Console.WriteLine(i);
Console.ReadKey();
}
static void Test(ref int a)
//如果不加ref的话,方法中a的赋值不影响i的输出值, 加了之后a里边存储的就是i的地址,对a赋值就相当于把赋给a的值指向i,a的值改变了,i的值也就跟着改变了。
{
a = 100;
}
方法的重载:
一般在同一个类中,方法名相同,并且方法的参数的个数不同或者对应位置一的类型不同,才能枸成方法重载
注意:方法重载和返回值没有关系
代码:
static void Main(string[] args)
{
string a = "aaa";
int max = Max(10, 20);
Console.WriteLine(max);
string word = Max(a, 10);
Console.WriteLine(word);
int sum = Max(10, 20, 30);
Console.WriteLine(sum);
Console.ReadKey();
}
//方法重载
/// <summary>
/// 下边的为方法重载 都是Max
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int Max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
public static string Max(string a, int b)
{
string word = "";
word= a + b;
return word;
}
public static int Max(int a, int b,int c)
{
int sum = 0;
sum = a + b + c;
return sum;
}
随机数
产生一个m到n之间的的随机数
Random i = new Random();
int s=i.next(m,n+1);
括号中的数为最小能取到1,最大能取到99 1<=s<100
代码:
static void Main(string[] args)
{
Random i = new Random(); //定义一个名称为i的随机函数
string a = "123", b = "456";
string msg = "";
msg = string.Format("{0}连接{1}后的值为{2}", a, b,a+b); //如果对一个字符串进行赋值想要使用占位符,用string.format(); 用法和console相同,但只是给类型赋值
Console.WriteLine(msg);
while (true)
{
int s = i.Next(1, 100); //括号中的数为最小能取到1,最大能取到99 1<=s<100
Console.WriteLine(s);
Console.ReadKey(true); //readkey(true)里边的true为设置用户所按的任意键是否显示在屏幕上 true为不显示 false为显示
}
}
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:
http://edu.csdn.net/heima/