您的位置:首页 > 编程语言 > C#

C#入门讲解(二)

2014-02-21 14:19 176 查看
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Day02

{

    class Program

    {

        static void Main(string[] args)

        {

            Student st = new Student();

            st.StudentId = Convert.ToInt32(Console.ReadLine());

            int id = 30;

            int id2 = 40;

            Console.WriteLine(st.StudentId);

            st.Study(ref id ,out id2);

            Console.WriteLine("id:"+id+"\nid2:"+id2);    //来验证ref 和 out都是值传递 ref和out见下详解

        }

    }

    class Student

    {

        private int studentId;

        public int StudentId

        {

            get { return studentId; }

            set

            {

                if (value > 0)

                {

                    studentId = value;

                }

            }

        }

        public void Study(ref int id,out int id1) //public 为访问修饰符,void 为返回类型,Study 为方法名 ,id为参数

        {

            id1 = 2;                              //使用ref关键字注重修改,有进有出,即id值有初始值;而用out关键字 注重修改

即,有出无进即id1无初始值需要对id附上初始值

            Console.WriteLine(id);

            Console.WriteLine(id1);

        }

    }

}

ref和out关键字详解:

ref侧重修改,out注重输出

    方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。 若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

    属性不是变量,不能作为 out 参数传递。方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。传递到 ref 参数的参数必须最先初始化。将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。属性不是变量,不能作为 ref 参数传递。

    自己理解:首先:两者都是按地址传递的,使用后都将改变原来的数值。看上述代码可以很直观的看出。

其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为

空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进。

静态方法和静态变量:

静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。调用一个被定义为static的方法,可以通过在它前面加上这个类的名

称,也可以像调用非静态方法一样通过类对象调用。

实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。

类的静态方法,静态变量是在类装载的时候装载的。但是要特别注意,类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以

建议尽量少用静态变量。尽量在静态方法中使用内部变量。

方法声明

其中static关键字即表示静态的。声明静态方法的语法如下:

<访问修饰符>static返回类型 方法名(参数列表)

{//方法体}

方法调用

静态方法与实例方法唯一不同的,就是静态方法在返回类型前加static关键字。静态方法的调用有两种途径:

(1)通过类的实例对象去调用

调用格式为: 对象名.方法名

(2) 通过类名直接调用

调用格式为: 类名::方法名

方法规则

我们在使用时要注意:

静态方法只能访问类的静态成员,不能访问类的非静态成员;

非静态方法可以访问类的静态成员,也可以访问类的非静态成员;

静态方法既可以用实例来调用,也可以用类名来调用。

方法重载注意事项:

(1)方法名一定要相同。

(2)方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。

    (a)如果参数个数不同,就不管它的参数类型了!

    (b)如果参数个数相同,那么参数的类型或者参数的顺序必须不同。

(3)方法的返回类型、修饰符可以相同,也可不同。

方法重载简单实例:

public int add(int a,int b){

    return a+b;



public double add (double a,double b){

    return a+b:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace day2

{

    class Program

    {

        static void Main(string[] args)

        {

            Student st = new Student(1);

            Console.WriteLine(st.Id);

        }

    }

    class Student

    {

        private int id;

        public int Id

        {

            get { return id; }

            set { id = value; }

        }

        public Student(int cid)            /*构造函数,如果不写此方法,会使用默认构造函数。构造函数的函数名必须与类名一致*/

        {

            this.id = cid;

        }

    }

}

构造函数 :

    是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: