黑马程序员————函数方法

来源:互联网 发布:北京龙袍干尸知乎 编辑:程序博客网 时间:2024/06/01 09:48
----------------------ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------- 


函数和方法

 1、函数的简单定义

函数(方法)是将一些代码进行重用的机制。

2、声明函数方法的语法定义

[访问修饰符][static] 返回值类型 方法名([参数1,参数2……]) 
{
方法体;
}

3、一般注意事项

(1)方法一般定义在类中

(2)无返回类型void

(3)如果声明的方法中,没有参数,后面的小括号不可省略,如果有参数,参数写在小括号中。

(4)定义方法的名称必须有意义,首字母大写。

4、静态方法和非静态方法的调用

静态方法是由static所修饰的函数方法,如果在本类中想要调用静态的方法,直接写类名.方法名() 调用,

或者直接写 方法名(); 如果不是本类中的方法,要在Main函数中调用,这时就需要写“类名.方法名()” 调用方式来

调用类中的方法。如果不是静态的方法,调用的时候,需要将方法所在的类进行实例化,利用对象的名称来调用方法。

小注:静态方法只能访问静态字段(定义在类中的变量 static int a),
  非静态的方法可以同时访问非静态的变量和静态的变量。
  由const修饰的变量,不能定义成静态的。 static const double PI=3.14;(错误);

5、方法中参数和返回值

(1)方法中参数,用来接收调用者传递过来的数据,参数成为形参。
     调用相应的方法,写入对应的参数,成为实参。

(2)方法的返回值只有一个,通过return关键字返回。(不严谨)
  
  6、自己编写函数方法

下面是函数方法的案例:(判断某年是否为闰年)


其运行的结果为:



7、out参数和ref参数

(1)当需要一个方法有多个返回值时,使用out参数。
    在方法参数加out,在传参的时候,也必须加out,
    表明这个参数不是用来传入值的,是用来传出值的。
在使用out参数时,必须先赋值,如下面SumMaxMin方法中,max=0;min=values[0];

(2)关于out参数函数的案例:


其运行的结果是:




(3)  ref功能:  ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。简单点说就是,使用了ref效果就几乎和C中使用了指针变量一样。它能够让你直接对原数进行操作,而不是对那个原数的Copy进行操作。

如下面这段代码:
namespace ConsoleApplicationFOR
{
    class Program
    {
        static void Main(string[] args)
        {


            int a = 90;
            Person.MainRef(ref a);
            Console.WriteLine(a); //输出的结果显然是91,而不是copy后的90
            Console.ReadKey();
      
        }
    }
    class Person
    {
         /// <summary>
        /// ref 才是真正的传递引用。
        /// </summary>
        /// <param name="a"></param>
        public static void MainRef(ref int a)
        {
            a++;
        }
    
        }
  } 

out参数和ref参数小结:
传递到 ref 参数的参数必须最先初始化。这与 out不同,out 的参数在传递之前不需要显式初始化。
尽管 refout在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用ref 参数,而另一个方法采用out 参数,则无法重载这两个方法。

8、函数方法的重载

构成重载的条件:方法名称相同(前提)
参数列表 (类型不相同,个数不相同,顺序不相同)
注意:与返回类型无关

如下面的代码所示:

 public int add(int n, int m)
        {
            int sum;
            return sum = n + m;
        }
        public string add(string a, string b)//方法的重载参数列表中的类型不同,方法名相同。
        {
            string su;
            return su = a + b;
        }
        public double add(double i, int j)//方法的重载参数列表中的类型顺序不同,方法名相同。
        {
            double sn;
            return sn = i + j;
        }
        public double add(double i, double j, double k)//参数的个数不同,方法名相同。
        {
            double ss;
            return ss = i + j + k;
        }
 

原创粉丝点击