欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#基元類型、值類型、引用類型是什么

這篇文章主要講解了“C#基元類型、值類型、引用類型是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#基元類型、值類型、引用類型是什么”吧!

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、玉林網(wǎng)絡(luò)推廣、成都小程序開發(fā)、玉林網(wǎng)絡(luò)營銷、玉林企業(yè)策劃、玉林品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供玉林建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:aaarwkj.com

首先了解下什么是基元類型,基元類型是編譯器直接支持的數(shù)據(jù)類型,像我們平時經(jīng)常用到的int string bool 都是基元類型,基元類型是映射到FCL中的類型,像前面的三種類型對應(yīng)到FCL中就是Int32 String Boolean,基元類型只是給我們的編程提供了方便,它和FCL中的類型在編譯后最終生成的IL完全相同。下面給出基元類型和FCL類型的對應(yīng)表
我們平時在寫程序時通常都是使用基元類型,因為方便,但本書的作者認為應(yīng)該直接使用FCL中的類型,原因如下:

C#基元類型

FCL類型

CLS相容

說明

sbyte

System.Sbyte

 

 

byte

System.Byte

 

 

short

System.Int16

 

 

ushort

System.UInt16

 

 

int

System.Int32

 

 

uint

System.Uint32

 

 

long

System.Int64

 

 

ulong

System.Uint64

 

 

char

System.Char

 

 

float

System.Single

 

 

double

System.Double

 

 

bool

System.Boolean

 

 

decimal

System.Decimal

 

 

object

System.Object

 

 

string

System.String

 

 

在c#中l(wèi)ong對應(yīng)的FCL類型為System.Int64,但是在其他的語言中,如c++ 就將long視為一個Int32。這樣習慣于一種編程語言的人在看另一種編程語言寫的源碼是就會產(chǎn)生錯誤的理解。在FCL中的許多的方法將類型名作為方法名的一部分,如System.Convert類提供ToBoolean,ToInt32,ToSingle等。這樣在使用基元類型做類型轉(zhuǎn)換時就感覺有點怪怪的,如:float val=Convert.ToSingle(“23”);

CLR VIA C#教程之值類型和引用類型的區(qū)別
1.所有的值類型都是從System.TypeValue派生,如Struct Enum都是值類型;所有引用類型都是從System.Object派生。
2.值類型分配在線程堆棧上,引用類型分配在托管堆上。
3.值類型表現(xiàn)形式有未裝箱形式和已裝箱形式,而引用類型總是已裝箱形式。
4.所有的值類型都是sealed類型,所以值類型不能作為任何類型的基類型,也不能在值類型中引入虛方法。
5.創(chuàng)建一個引用類型變量時,會被初始化為null,試圖使用一個null的引用類型變量時,會拋出NullReferenceException異常,也就是常見的“未將對象引用設(shè)置到對象的實例”;值類型在創(chuàng)建時所有成員都初始化為0了,所以不會拋出該異常。

原文例子表示值類型和引用類型的區(qū)別

class Program  {  static void Main(string[] args)  {  SomeRef r1 = new SomeRef();  SomeVal v1 = new SomeVal();  r1.x = 5;  v1.x = 5;  Console.WriteLine(r1.x);    //5  Console.WriteLine(v1.x);    //5  SomeRef r2 = r1;  SomeVal v2 = v1;  r1.x = 8;  v1.x = 9;  Console.WriteLine(r1.x);    //8  Console.WriteLine(r2.x);    //9  Console.WriteLine(v1.x);    //9  Console.WriteLine(v2.x);    //5  }  }  class SomeRef  {  public Int32 x;  }  struct SomeVal  {  public Int32 x;  }


CLR VIA C#教程之CLR中類型字段布局的控制

為了提高性能,clr能按照所選擇的任何方式來排列類型的字段。我們可以通過在類會是結(jié)構(gòu)上使用System.Runtime.InteropServices.StructLayoutAttribute屬性來改變這種排列的順序。該屬性接受一個LayoutKind的枚舉值(Auto,Sequential,Explicit),默認情況下C#編譯器會為類選擇Atuo,為結(jié)構(gòu)選擇Sequential。下面來定義一個類和一個結(jié)構(gòu)

struct SomeVal  {  public String name;  public Int32 id;   }   class SomeRel  {  public String name;  public Int32 id;  }

查看IL代碼可以看到默認的排列順序

C#基元類型、值類型、引用類型是什么

現(xiàn)在給類和結(jié)構(gòu)加上屬性,首引用加命名空間 using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Auto)]  struct SomeVal  {  public String name;  public Int32 id;  }  [StructLayout(LayoutKind.Sequential)]  class SomeRel  {  public String name;  public Int32 id;  }

再查看IL可以看到順序已經(jīng)發(fā)生了變化

    C#基元類型、值類型、引用類型是什么

C#編譯器總是會默認給結(jié)構(gòu)這樣的值類型選擇Sequential,是因為值類型會經(jīng)常和非托管代碼進行交互,字段必須保持和開發(fā)人員定義的一致。我們在編碼過程中如果判斷所創(chuàng)建的值類型不會與非托管代碼進行交互,就可以像上面那樣給創(chuàng)建的值類型添加[StructLayout(LayoutKind.Auto)] ,讓其進行自動排列,以提高性能。

感謝各位的閱讀,以上就是“C#基元類型、值類型、引用類型是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對C#基元類型、值類型、引用類型是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

分享名稱:C#基元類型、值類型、引用類型是什么
網(wǎng)頁地址:http://aaarwkj.com/article40/peehho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、建站公司、營銷型網(wǎng)站建設(shè)、定制網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
亚洲欧美日韩午夜在线| 亚洲av天堂天天天堂色| 日韩国产精品激情一区| 91极品气质女神长腿翘臀| 精品人妻一区二区三区不卡| 人妻天堂久久一区二区三区| 精品国产女同一区二区| 国产成人原创免费观看| 中文字幕人妻丝袜乱一区二区| 欧美视频亚洲视频自拍视频| 国产亚洲一区二区日韩欧美| 国产自拍最新在线视频| 亚洲永久免费黄色av| 亚洲熟妇av乱码在线观看| 国产传媒在线视频免费| 国产精品妇女一二三区| 日本午夜理论视频在线播放| 末满18周岁禁止观看| 日本欧美中文字幕一区| 不卡一区二区三区av电影| 亚洲最新精品一区二区| 国产精品一区二区污网站| 国产精品99久久久久久宅男九| 在线观看青青草原免费| 日韩欧美国产精品福利| 中文色婷婷国产精品视频| 久久综合亚洲鲁鲁五月天| 亚洲精品欧美综合第四区| 宅男视频在线观看视频| 丰满人妻侵犯中文字幕| 亚洲综合日韩丝袜人妻| 天堂av在线免费观看| 久久精品国产亚洲av麻| 丰满少妇一级淫片在线播放| 女性裸体无遮挡啪啪网站| 欧美口爆吞精在线播放| 日本加勒比一本在线观看 | 高清一区二区三区不卡视频| 久久综合激情亚洲欧美专区| 亚洲ve中文字幕久久一区二区 | 日日躁夜夜躁狠狠躁黑人|