亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#中類與結(jié)構(gòu)的區(qū)別實(shí)例分析

 更新時(shí)間:2014年08月21日 09:03:32   投稿:shichen2014  
這篇文章主要介紹了C#中類與結(jié)構(gòu)的區(qū)別,類與結(jié)構(gòu)是C#初學(xué)者比較輕易混淆的概念,本文加以實(shí)例說(shuō)明,需要的朋友可以參考下

類與結(jié)構(gòu)是C#程序設(shè)計(jì)中基本的數(shù)據(jù)類型,而初學(xué)者往往不能很好的分清二者之間的區(qū)別。本文就以附帶實(shí)例形式加以說(shuō)明。具體如下:

一、基本概念:

類:引用類型,存儲(chǔ)在堆中,棧中存儲(chǔ)引用地址,在方法的傳輸中只是傳輸?shù)刂返囊?,修改指向的?duì)象會(huì)影響原有對(duì)象的值,傳輸中消耗內(nèi)存小

結(jié)構(gòu):值類型,存儲(chǔ)在堆棧中,傳輸過(guò)程中傳輸整個(gè)對(duì)象的副本,修改指向?qū)ο蟮闹挡粫?huì)影響原有的對(duì)象,傳輸中消耗內(nèi)存大

二、實(shí)例代碼如下:

class Program
{
    static void Main(string[] args)
    {
      /*聲明類對(duì)象 并賦值10*/
      TestClass TC1 = new TestClass();
      TC1.x = 10;
      TC1.y = "10";
      Console.WriteLine("/*聲明類對(duì)象TC1 并賦值10*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
      TC1.x = 20;
      TC1.y = "20";
      Console.WriteLine("/*修改類對(duì)象 TC1 值為20*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);

      /*執(zhí)行類傳遞 并修改傳遞后的值*/
      Console.WriteLine("/*創(chuàng)建類對(duì)象 TC2 指向 TC1,并修改 值為10*/");
      TestClass TC2 = TC1;
      TC2.x = 10;
      TC2.y = "10";
      Console.WriteLine("/*類傳輸過(guò)程中傳遞的是存儲(chǔ)在堆棧中的引用地址 傳輸中消耗內(nèi)存小 并沒(méi)有傳送存儲(chǔ)在堆中的值 所以原有對(duì)象受到影響*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
      Console.WriteLine("TC2 x={0} y={0}", TC2.x, TC2.y);

      /*聲明結(jié)構(gòu)對(duì)象*/
      Console.WriteLine("/*聲明結(jié)構(gòu)對(duì)象TS1 并賦值10*/");
      TestStruct TS1 = new TestStruct();
      TS1.x = 10;
      TS1.y = "10";
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      Console.WriteLine("/*修改結(jié)構(gòu)對(duì)象 TS1 值為20*/");
      TS1.x = 20;
      TS1.y = "20";
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      /*執(zhí)行結(jié)構(gòu)傳遞 并修改傳遞后的值*/
      Console.WriteLine("/*創(chuàng)建結(jié)構(gòu)對(duì)象 TS2 指向 TS1,并修改 值為10*/");
      TestStruct TS2 = TS1;
      TS2.x = 10;
      TS2.y = "10";
      Console.WriteLine("/*結(jié)構(gòu)傳輸過(guò)程中 會(huì)傳遞整個(gè)對(duì)象的副本 傳輸中消耗內(nèi)存大 所以修改對(duì)原有對(duì)象不受影響*/");
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      Console.WriteLine("TS2 x={0} y={0}", TS2.x, TS2.y);

      Console.ReadLine();
    }
}
public class TestClass
{
  public int x;
  public string y;
}
public struct TestStruct
{
  public int x;
  public string y;
}

代碼運(yùn)行結(jié)果如下圖所示:

相關(guān)文章

  • C# 10個(gè)常用特性匯總

    C# 10個(gè)常用特性匯總

    這篇文章主要介紹了C# 10個(gè)常用特性,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Revit API取得變量的內(nèi)參名稱實(shí)例代碼

    Revit API取得變量的內(nèi)參名稱實(shí)例代碼

    這篇文章介紹了Revit API取得變量的內(nèi)參名稱實(shí)例代碼,有需要的朋友可以參考一下
    2013-11-11
  • 基于C#實(shí)現(xiàn)簡(jiǎn)單的二維碼和條形碼的生成工具

    基于C#實(shí)現(xiàn)簡(jiǎn)單的二維碼和條形碼的生成工具

    這篇文章主要為大家詳細(xì)介紹了如何基于C#實(shí)現(xiàn)簡(jiǎn)單的二維碼和條形碼工具,用于二維碼條形碼的生成與識(shí)別,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 淺談C#中[]的幾種用法

    淺談C#中[]的幾種用法

    本文主要介紹了淺談C#中[]的幾種用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C#判斷字符串是否是int/double(實(shí)例)

    C#判斷字符串是否是int/double(實(shí)例)

    本文主要分享了C#判斷字符串是否是int/double的具體實(shí)例,具有一定的參考價(jià)值,需要的朋友一起來(lái)看下吧
    2016-12-12
  • DevExpress之TreeList用法實(shí)例總結(jié)

    DevExpress之TreeList用法實(shí)例總結(jié)

    這篇文章主要介紹了DevExpress之TreeList用法,對(duì)于C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • 最新評(píng)論