構造函數:在初始化時就執行的函數,
使用構造函數來實現兩個 類 之間傳值(可以是任何類型,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();//顯示查找對話框 } }