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