C#_复合构造函数

 某些言的提供了制构造函数,即从当前类实例构造一个新的类实例。在C#言中,没有提供制构造函数,如果要实现复制构造的功能,就必自行这样的构造函数。

本示例主要说明了如何实现复制构造函数,技术要点如下。
—    复制构造函数仍然属于构造函数,不同的是以类本身作为参数的数据类型。
—    调用构造函数时,参数必须是已经创建的类实例。

using System;

using System.Text ;

using System.Collections;

 

namespace Fuhegouzaohanshu

{

        /// <summary>

        /// Class1 の概要の説明です。

        /// </summary>

        class Class1

        {

                /// <summary>

                /// アプリケーションのメインエントリ ポイントです。

                /// </summary>

                [STAThread]

                static void Main (string[] args)

                {

                        Person person1 = new Person("George", 40);

 

                        // Create another new object, copying person.

                        Person person2 = new Person(person1);

 

                        // Keep the console window open in debug mode.

                        Console.WriteLine("Press any key to exit.");

                        Console.ReadLine();

 

                }

        }

        class Person//表示“人”的

 

        {

                       

                private string name;

                private int age;

 

                //构造函数

                public Person(string name, int age)

                {

                        this.name = name ;

                        this.age = age;

                }

 

                // 制构造函数,以类实例作参数的构造函数,将参数例的字段赋给当前例字段

                public Person(Person aperson)

                {

                        name = aperson.name ;

                        age  = aperson.age ;

                }

 

                public string Details

                {

                        get

                        {

                                return name + "is " +age.ToString();

                        }

                }

        }

 

}

本示例的Person类中定义了两个构造函数。一个是默认的、不带参数的构造函数,另一个是以Person类实例作为参数的复制构造函数。在主程序入口Main方法中,首先使用默认的构造函数创建Person类的实例personA,然后给personA中的字段赋值,再将personA类实例作为Person类复制构造函数的参数,创建Person类的另一个实例personB,最后将personB的数据打印出来

使用构造函数的时候,将在托管内存中为新的类实例分配位置,而不是指向原先的类实例的托管内存位置。在本示例程序中,personB类实例和personA类实例不存在引用关系,其中一个实例字段的修改不会对另一个实例产生影响

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值