黑马程序员----面向对象之 “方法”


----------------------  ASP.Net+Android+IO开发S 、  .Net培训、期待与您交流! ----------------------



                  方法是一组代码的集合,用于完成指定的功能。每个方法都有一个方法名,便于识别和让其他方法调用。在C#中定义的方法都必须放在某个类中。

(一),方法的定义和调用

                 语法:

                     访问修饰符  返回值类型  方法名称(参数序列)

                      {

                                  语句序列

                      }

               注意:不管有没有参数序列,小括号都不能省略。如果声明一个void类型的方法,return语句可以省略不写;如果声明的是一个非void类型的方法,则方法中至少有一个return语句。

               例如:方法的定义和调用

 

class Program
    {
        //定义一个方法,返回值类型是int
        public int Method()
        {
            Console.WriteLine("我的方法");
            int i = 10;
            return i;
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            int j = 1;
            //调用Method方法,并把返回值赋值给j
            j = p.Method();
            Console.WriteLine("值是{0}",j);
            Console.ReadKey();
        }
    }


(二),方法中的参数传递

                   在类或结构中定义方法时,可以将参数传入方法中对其进行处理;也可以将方法中处理过的信息返回给调用者。传递变量参数到方法的方式有以下几种:

          1),传递值类型的参数

                      语法:

                             参数类型  参数名

                      注意:当该方法被调用时,便会为每个值类型参数分配一个新的内存空间,然后将对应的表达式运算的值复制到该内存空间。在方法中更改参数的值不会影响到这个方法之外的变量。

                      例如:

class Program
    {
        //定义一个传递值类型参数的方法
        public static void Method1(int i)
        {
            i++;
        }
        static void Main(string[] args)
        {
            int i = 1;
            Console.WriteLine("调用方法之前,i={0}",i);
            Method1(i);
            //调用之后i的值还是不变
            Console.WriteLine("调用方法之后,i={0}", i);
            Console.ReadKey();
        }
    }


          2),传递引用类型的参数

                    与传递值类型参数不同,引用类型的参数并没有再分配内存空间,实际上传递的是指向原变量的引用,即引用参数和原变量保存的是同一个地址。传递引用类型的参数,需要在参数前面加上ref关键字,在方法中修改引用参数的值实际上也就是修改被引用的变量的值。

                    语法:

                        ref 参数类型 参数名

                    例如:

 

class Program
    {
        //定义一个传递引用类型参数的方法
        public static void Method1( ref int i)
        {
            i++;
        }
        static void Main(string[] args)
        {
            int i = 1;
            Console.WriteLine("调用方法之前,i={0}",i);
            Method1( ref i);
            //调用Method1方法之后i的值加一
            Console.WriteLine("调用方法之后,i={0}",i);
            Console.ReadKey();
        }
    }

           3),输出多个引用类型的参数

                    有时候一个方法计算的结果有多个,而return语句一次只能返回一个结果,所以就需要用out关键字来表明该引用参数是用于输出的,而且调用该参数时不需要对参数进行初始化。

                     语法:

                         out 参数类型  参数名

                     例如:

 class Program
    {
        //定义一个传递多个引用类型参数的方法
        public static void Method1(out int i,out int j)
        {
            i = 1;
            j = 2;
        }
        static void Main(string[] args)
        {
            //没有对参数进行初始化
            int i, j;
            //调用Method1方法之后,i和j的值被输出,并分别赋值给变量i和j
            Method1(out i, out j);            
            Console.WriteLine("调用方法之后,i={0},j={1}",i,j);
            Console.ReadKey();
        }
    }


          4),传递个数不确定的参数

                    当需要传递的参数个数不确定时,C#语言采用params关键字声明参数的个数是不确定的。

                   例如:

  

class Program
    {
        //定义一个传递不确定个数的参数的方法
        public static void Method1(params int[] i)
        {
            foreach (int j in i)
            {
                Console.WriteLine(j);
            }
        }
        static void Main(string[] args)
        {
            //调用Method1方法是传入不定量个参数
            Method1(1, 2, 3, 4, 5, 56, 6);
            Console.ReadKey();
        }
    }

(三),方法重载

                 方法重载是指具有相同方法名,但参数类型或参数个数不完全相同的多个方法可以同时出现在一个类中。

                 例如:

 

class Program
    {
        
        public static int Method(int i,int j)
        {
            return i+j;
        }
        public static string Method(string i, string j)
        {
            return i + j;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(Method(1, 2));
            Console.WriteLine( Method("1", "2"));
            Console.ReadKey();
        }
    }

                 注意:虽然有两个Method方法,但由于方法中参数的类型不同,所以系统在调用是会自动找到最匹配的方法。

   


----------------------  ASP.Net+Android+IO开发S 、  .Net培训、期待与您交流! ----------------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值