C#入门讲解(二)

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运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值