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運算符一起使用在創建對象的語句中 特別的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載


發佈了26 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章