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

---------------------- 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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值