欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

一、

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

二、

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

三、代碼例子

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)用時(shí)修改的只是結(jié)構(gòu)副本,所以原來(lái)的結(jié)構(gòu)并沒(méi)有發(fā)生變化;  

ModifyPointClass(PointClass point) 調(diào)用時(shí)所修改的對(duì)象是原對(duì)象,因?yàn)閰?shù)傳遞過(guò)來(lái)的是一個(gè)引用地址,這地址指向原對(duì)象

四、總結(jié)

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

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

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持我們!

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有