溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中怎么實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù)

發(fā)布時(shí)間:2021-07-07 16:27:25 來(lái)源:億速云 閱讀:517 作者:Leah 欄目:編程語(yǔ)言

C#中怎么實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù),針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

C#復(fù)制構(gòu)造函數(shù)的一點(diǎn)認(rèn)識(shí):

某些編程語(yǔ)言的類提供了復(fù)制構(gòu)造函數(shù),即從當(dāng)前類實(shí)例構(gòu)造一個(gè)新的類實(shí)例。在C#編程語(yǔ)言中,沒(méi)有提供復(fù)制構(gòu)造函數(shù),如果要實(shí)現(xiàn)復(fù)制構(gòu)造的功能,就必須自行編寫(xiě)這樣的構(gòu)造函數(shù)。

實(shí)現(xiàn)C#復(fù)制構(gòu)造函數(shù)的技術(shù)要點(diǎn)

本示例主要說(shuō)明了如何實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù),技術(shù)要點(diǎn)如下。

◆C#復(fù)制構(gòu)造函數(shù)仍然屬于構(gòu)造函數(shù),不同的是以類本身作為參數(shù)的數(shù)據(jù)類型。

◆調(diào)用構(gòu)造函數(shù)時(shí),參數(shù)必須是已經(jīng)創(chuàng)建的類實(shí)例。

C#復(fù)制構(gòu)造函數(shù)實(shí)現(xiàn)步驟

(1)創(chuàng)建控制臺(tái)應(yīng)用程序項(xiàng)目,命名為“CopyConstruct”。

(2)打開(kāi)并編輯Program.cs文件,代碼如下所示。

using System;    using System.Collections.Generic;    using System.Text;    namespace CopyConstruct    {    class Program    {    static void Main(string[] args)    {    Person personA = new Person();//使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建示例    personA.FirstName = "Pony";    personA.LastName = "Smith";    personA.Age = 42;    Person personB = new Person(personA);//使用C#復(fù)制構(gòu)造函數(shù)創(chuàng)建示例    Console.WriteLine("personB的數(shù)據(jù):{0} {1}-{2}",    personB.FirstName, personB.LastName, personB.Age);    Console.ReadLine();    }    }    class Person//表示“人”的類    {    public string FirstName { get; set; }    public string LastName { get; set; }    public int Age { get; set;}    public Person()//默認(rèn)構(gòu)造函數(shù)    {    }    //C#復(fù)制構(gòu)造函數(shù),以類實(shí)例作為參數(shù)的構(gòu)造函數(shù),將參數(shù)實(shí)例的字段賦給當(dāng)前實(shí)例字段    public Person(Person source)    {    this.FirstName = source.FirstName;    this.LastName = source.LastName;    this.Age = source.Age;    }    }    }

(3)按F5鍵運(yùn)行程序,運(yùn)行結(jié)果如下所示。

personB的數(shù)據(jù):Pony Smith-42

C#復(fù)制構(gòu)造函數(shù)源程序解讀

(1)本示例的Person類中定義了兩個(gè)構(gòu)造函數(shù)。一個(gè)是默認(rèn)的、不帶參數(shù)的構(gòu)造函數(shù),另一個(gè)是以Person類實(shí)例作為參數(shù)的復(fù)制構(gòu)造函數(shù)。在主程序入口Main方法中,首先使用默認(rèn)的構(gòu)造函數(shù)創(chuàng)建Person類的實(shí)例personA,然后給personA中的字段賦值,再將personA類實(shí)例作為Person類復(fù)制構(gòu)造函數(shù)的參數(shù),創(chuàng)建Person類的另一個(gè)實(shí)例personB,***將personB的數(shù)據(jù)打印出來(lái)。本示例程序的流程圖。

(2)使用構(gòu)造函數(shù)的時(shí)候,將在托管內(nèi)存中為新的類實(shí)例分配位置,而不是指向原先的類實(shí)例的托管內(nèi)存位置。在本示例程序中,personB類實(shí)例和personA類實(shí)例不存在引用關(guān)系,其中一個(gè)實(shí)例字段的修改不會(huì)對(duì)另一個(gè)實(shí)例產(chǎn)生影響.

關(guān)于C#中怎么實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI