zoukankan      html  css  js  c++  java
  • 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();//显示查找对话框
            }
    
    
        }
  • 相关阅读:
    批归一化(Batch Normalization)
    NLP | 文本风格迁移 总结
    LeetCode: Word Ladder
    LeetCode: Longest Consecutive Sequence
    LeetCode: Sum Root to Leaf Numbers
    LeetCode: Surrounded Regions
    LeetCode: Palindrome Partition
    LeetCode: Clone Graph
    LeetCode: Gas Station
    LeetCode: Candy
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4174259.html
Copyright © 2011-2022 走看看