黑马程序员_C#面向过程学习总结2

来源:互联网 发布:java实现加法运算 编辑:程序博客网 时间:2024/06/05 05:41
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

方法


功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,那一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了


定义语法:

[访问修饰符][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/
原创粉丝点击