最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析C#中結(jié)構(gòu)與類的區(qū)別

 更新時間:2016年12月22日 10:20:06   作者:反骨仔(二五仔)  
本文主要對C#結(jié)構(gòu)與類的區(qū)別進行簡要分析,文中舉了實例,便于理解,具有很好的參考價值,需要的朋友一起來看下吧

一、

  •    結(jié)構(gòu):值類型,存儲在堆棧中,位于計算機的內(nèi)存邏輯區(qū)域中
  •     類   :引用類型,存儲在堆中,位于計算機內(nèi)存的不同邏輯位置

二、

  •   較小的數(shù)據(jù)使用結(jié)構(gòu);
  •   將一個結(jié)構(gòu)值傳遞到方法時,傳遞的是整個數(shù)據(jù)結(jié)構(gòu);
  •   傳遞一個類,實際上是將引用傳遞到對象,即只有內(nèi)存地址;
  •   對結(jié)構(gòu)修改,改變的是結(jié)構(gòu)的副本,這是值類型工作方式的定義:傳遞值的副本;
  •   傳遞一個引用到類本身意味著在類中修改值,實際上改變的是原始對象;

三、代碼例子

1.新建 PointClass.cs

namespace StructAndClass
{
 internal class PointClass
 {
 public PointClass(int x, int y)
 {
  X = x;
  Y = y;
 }
 public int X { get; set; }
 public int Y { get; set; }
 }
}

2.新建 PointStruct.cs

namespace StructAndClass
{
 internal struct PointStruct
 {
 public int X { get; set; }
 public int Y { get; set; }
 public PointStruct(int x, int y)
 {
  X = x;
  Y = y;
 }
 }
}

3.Program.cs

using System;
namespace StructAndClass
{
 internal class Program
 {
 private static void Main(string[] args)
 {
  Console.WriteLine("PointStruct =====");
  var pStruct = new PointStruct(10, 10);
  Console.WriteLine("初始值:x={0},y={1}", pStruct.X, pStruct.Y);
  ModifyPointStruct(pStruct);
  Console.WriteLine("調(diào)用 ModifyPointStruct() 后的值:x={0},y={1}", pStruct.X, pStruct.Y);
  Console.WriteLine();
  Console.WriteLine("PointClass =====");
  var pClass = new PointClass(10, 10);
  Console.WriteLine("初始值:x={0},y={1}", pClass.X, pClass.Y);
  ModifyPointClass(pClass);
  Console.WriteLine("調(diào)用 ModifyPointClass() 后的值:x={0},y={1}", pClass.X, pClass.Y);
  Console.Read();
 }
 private static void ModifyPointStruct(PointStruct point)
 {
  Console.WriteLine("調(diào)用方法:ModifyPointStruct");
  point.X = 20;
  point.Y = 20;
  Console.WriteLine("修改成的值:x={0}, y={1}", point.X, point.Y);
 }
 private static void ModifyPointClass(PointClass point)
 {
  Console.WriteLine("調(diào)用方法:ModifyPointClass");
  point.X = 20;
  point.Y = 20;
  Console.WriteLine("修改成的值:x={0}, y={1}", point.X, point.Y);
 }
 }
}

4.結(jié)果:

【解析】

ModifyPointStruct(PointStruct point) 調(diào)用時修改的只是結(jié)構(gòu)副本,所以原來的結(jié)構(gòu)并沒有發(fā)生變化;  

ModifyPointClass(PointClass point) 調(diào)用時所修改的對象是原對象,因為參數(shù)傳遞過來的是一個引用地址,這地址指向原對象

四、總結(jié)

結(jié)構(gòu)是值類型并在堆棧中傳遞,每次使用方法進行修改的都只是結(jié)構(gòu)副本;

至于類,傳遞的是內(nèi)存地址的引用,修改的就是初始值

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • C#根據(jù)http和ftp圖片地址獲取對應(yīng)圖片

    C#根據(jù)http和ftp圖片地址獲取對應(yīng)圖片

    這篇文章主要為大家詳細介紹了C#根據(jù)http和ftp圖片地址獲取對應(yīng)圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • c# 應(yīng)用事務(wù)的簡單實例

    c# 應(yīng)用事務(wù)的簡單實例

    這篇文章介紹了c# 應(yīng)用事務(wù)的簡單實例,有需要的朋友可以參考一下
    2013-09-09
  • C#條碼生成及打印實例代碼

    C#條碼生成及打印實例代碼

    這篇文章主要為大家詳細介紹了C#條碼生成及打印實例代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 詳解C# Socket異步通信實例

    詳解C# Socket異步通信實例

    本篇文章主要介紹了C# Socket異步通信,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C#基于COM方式讀取Excel表格的方法

    C#基于COM方式讀取Excel表格的方法

    這篇文章主要介紹了C#基于COM方式讀取Excel表格的方法,涉及C# COM組件的調(diào)用與Excel表格的使用技巧,需要的朋友可以參考下
    2016-07-07
  • C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題

    C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題

    這篇文章主要介紹了C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題 ,文中給大家列舉通過兩種方法來判斷,需要的朋友可以參考下
    2018-10-10
  • C# 枚舉的使用簡介

    C# 枚舉的使用簡介

    這篇文章主要介紹了C# 枚舉的簡單使用,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#異步下載文件

    C#異步下載文件

    這篇文章主要介紹了C#異步下載文件的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • C#使用CefSharp和網(wǎng)頁進行自動化交互的示例代碼

    C#使用CefSharp和網(wǎng)頁進行自動化交互的示例代碼

    CefSharp 是一個用 C# 編寫的開源庫,它封裝了 Google Chrome 瀏覽器的 Chromium 內(nèi)核,CefSharp 允許開發(fā)者在其應(yīng)用程序中嵌入瀏覽器功能,從而能夠展示網(wǎng)頁內(nèi)容、執(zhí)行JavaScript代碼,本文給大家介紹了C#使用CefSharp和網(wǎng)頁進行自動化交互,需要的朋友可以參考下
    2024-07-07
  • c#多線程編程基礎(chǔ)

    c#多線程編程基礎(chǔ)

    線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程,本文使用示例介紹一下多線程的使用方法
    2014-02-02

最新評論

化州市| 临朐县| 财经| 乌鲁木齐市| 桐柏县| 兴城市| 拉孜县| 韶关市| 安化县| 鹤庆县| 莱芜市| 张家界市| 中山市| 雅安市| 泰州市| 乐业县| 和平区| 喀喇沁旗| 东乡| 新兴县| 改则县| 铜陵市| 开平市| 华宁县| 新乐市| 鄂托克前旗| 乌海市| 东至县| 马鞍山市| 佛教| 固原市| 镶黄旗| 乌兰县| 南郑县| 宜川县| 平昌县| 共和县| 安阳县| 庆安县| 石城县| 通州区|