构造函数:在初始化时就执行的函数,
使用构造函数来实现两个 类 之间传值(可以是任何类型,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();//显示查找对话框 } }