程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 20141219—構造函數,類與類之間的傳值,20141219構造函數

20141219—構造函數,類與類之間的傳值,20141219構造函數

編輯:C#入門知識

20141219—構造函數,類與類之間的傳值,20141219構造函數


構造函數:在初始化時就執行的函數,

使用構造函數來實現兩個 類 之間傳值(可以是任何類型,string,int,類 可以將他們視為 對象)

構造函數可以帶有參數,並且有多個重載方法。

函數的參數只能在函數內部使用,所以需要一個外部變量來接受這個要傳的值。

請看以下代碼,

主函數:

class Program
    {
        static void Main(string[] args)
        {
            //可以在初始化時直接帶入參數。

            Class1 a1 = new Class1();//初始化Class1
            Class2 a2 = new Class2(a1);//初始化Class2,帶參數 a1(Class1類)
            Console.WriteLine(a2.Mingzi);//打印 Class2 中的變量Mingzi。
            //打印結果:  張三

            Class1 b1 = new Class1();
            b1.gaizhi("李四");//調用函數gaizhi。修改了Class1中變量name的值
            Class2 b2 = new Class2(b1);//初始化Class2,帶參數 b1(Class1類)
            Console.WriteLine(b2.Mingzi);
            //打印結果:  李四

            Class1 c1= new Class1();
            c1.gaizhi("王五");//調用函數gaizhi。修改了Class1中變量name的值
            Class2 c2 = new Class2(b1);//所帶參數仍是 b1
            Console.WriteLine(c2.Mingzi);
            //打印結果:  李四

            Class2 c3 = new Class2(c1);//所帶參數 c1
            Console.WriteLine(c3.Mingzi);
            //打印結果:  王五

            Console.ReadLine();
        }
    }

Class1 類:

class Class1
    {
       public string name;//外部變量

        public Class1()//構造函數
        {
            name = "張三";
       }
        //函數 gaizhi(string類型參數)
        public void gaizhi(string ming)
       {
           name = ming;
       }
    }

Class2 類:

class Class2
    {
       public string Mingzi;//外部變量
        public Class2()//構造函數
        {
       }

        public Class2(string name)//構造函數的其他重載方法,參數是string類型
        {
          //函數中的參數只可在函數中使用,需要一個外部變量來接受才能在外部使用
            Mingzi = name;//外部變量賦值,將Mingzi指向name。
        }

        public Class2(Class1 classname)//構造函數的其他重載方法,參數是 類(Class1) 類型
        {
           Mingzi = classname.name;//外部變量賦值,將Mingzi指向Class1.name。
        }
    }

對象1=對象2   把 對象1  指向 對象2

通過構造函數我們可以在其他類中對另一個類中的對象進行操作。

譬如:文本的查找、替換功能。

以下知識一段代碼,查找指定文本並選中指定文本,

這裡是查找對話框的一部分代碼:

public partial class chazhao : Form
    {
        public chazhao()
        {
            InitializeComponent();
        }
        private jsb chuangti;
        public chazhao(string ss, jsb chuangti00)
        {
            InitializeComponent();
            cz_czshuru.Text = ss;//把主窗口中選中的文本寫人到查找輸入框cz_czshuru
              chuangti = chuangti00;//把主窗體傳過來。
        }

        private void czxiayige_Click(object sender, EventArgs e)
        {
            int chang, weizhi;
            string czsr;
            czsr = cz_czshuru.Text;//查找輸入框中的文本
            chang = cz_czshuru.Text.Length;//文本長度
            weizhi = chuangti.shurukuang.Text.IndexOf(czsr);//查找主窗體中符合文本的索引
            chuangti.shurukuang.Select(weizhi, chang);//選中主窗體中符合的文本
            chuangti.Focus();//主窗體獲得焦點
        }
    //載入
        private void chazhao_Load(object sender, EventArgs e)
        {
        }
    //取消按鈕
        private void cz_quxiao_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }

這裡是主窗體中的一部分代碼

public partial class jsb : Form
    {
        public jsb()
        {
            InitializeComponent();
        }

        private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)
        {
          //初始化查找對話框時帶入參數  shurukuang是主窗體中文本框的名字
          //括號內的兩個參數,前面的是主窗體中選中的文本內容,後面的this是指這個主窗體。 
            chazhao cz = new chazhao(this.shurukuang.SelectedText,this);
            cz.Owner = this;//設置對話框是他的子窗口(查找窗體是記事本窗體的子窗口)
            cz.Show();//顯示查找對話框
        }


    }

  1. 上一頁:
  2. 下一頁: