1. 程式人生 > >c#學習筆記--陣列、列舉、結構、值型別和引用型別

c#學習筆記--陣列、列舉、結構、值型別和引用型別

一、陣列

System.Array基類

多維陣列:矩形陣列(表示方法不同於C語言),交錯陣列(C語言不具備)

二、列舉型別

.net型別系統包括:類、介面、列舉、結構和委託。

System.Enum類型別

三、結構型別

關鍵字struct,“輕量級的類型別”,支援封裝,但不能繼承。

可以用new來建立結構變數,但也可以不用new

四、值型別和引用各型別

System.ValueType   System.object

1.賦值操作

結構型別是值型別,它的賦值操作會在棧中建立一個新的副本;

而對於引用型別,則只是在記憶體中重定向引用變數的引用,也就是在棧中建立了堆中實際物件的引用的副本;

包含引用型別的值型別,淺複製,也就是對於值型別中包含的引用型別的賦值,仍然只是複製了引用而已,若要實現深複製,需要實現IClonable介面。

2.引用型別的傳遞

分為預設的傳遞方式(值傳遞)和引用傳遞(ref或out關鍵字)

按值傳遞引用型別--被呼叫者可以改變物件的狀態資料的值,但不能改變所引用的物件,也就是不能使其改變成為指向另一個物件的引用。

按引用傳遞的引用型別--既可以改變狀態物件資料的值,又可以重新new一個物件並指向它,也就是可以改變所引用的物件。

值型別必須派生自System.ValueType;分配在棧上;

引用型別則派生自除了System.ValueType以外的任意型別;分配在託管堆上。

3.可空型別

?操作符和??操作符……

相關推薦

c#學習筆記--陣列列舉結構型別引用型別

一、陣列 System.Array基類 多維陣列:矩形陣列(表示方法不同於C語言),交錯陣列(C語言不具備) 二、列舉型別 .net型別系統包括:類、介面、列舉、結構和委託。 System.Enum類型別 三、結構型別 關鍵字struct,“輕量級的類型別”,支援封裝,

C++學習筆記(三)記憶體模型名稱空間物件

    1、標頭檔案中通常包含的內容:函式原型、使用#define和const定義的符號常量、結構宣告、類宣告、模板宣告、行內函數     2、同樣可以使用條件編譯     3、靜態持續變數:外部連結性、內部連結性、無連結性靜態持續變數:外部連結性、內部連結性、無連結性         外部連結性:在程式碼塊

C#】類結構型別引用型別里氏替換

目錄 舉例: 一、類和結構的區別: 二、棧和堆的區別: 1.官方解讀: 棧: 是編譯期間就分配好的記憶體空間,因此程式碼中必須就棧的大小有明確的定義; 區域性值型別變數、值型別引數等都在棧的記憶體中。 堆:

[C#學習筆記之異步編程模式2]BeginInvokeEndInvoke方法 (轉載)

cti otf 函數返回 編程模式 catch 數值 gin 單線程 blog 為什麽要進行異步回調?眾所周知,普通方法運行,是單線程的,如果中途有大型操作(如:讀取大文件,大批量操作數據庫,網絡傳輸等),都會導致方法阻塞,表現在界面上就是,程序卡或者死掉,界面元素不動了,

C++學習筆記(一)——一個字符串分割統計的工具(TextUtils)

發生 插入 exit 大小 按行讀取 位置 n) fstream ostream 第一講先從一個實例開始——我們需要完成一個遍歷文件並統計單詞出現次數的任務。分解功能:首先,按行讀取文件並舍棄可能的空行。其次,將每一行都按照空格劃分單詞。因為可能存在標點符號,我們還需要將標

CLR via C#學習筆記-第四章-類型基礎-命名空間程序集

程序集 microsoft 集中 歧義 str 可能 ring 需要 idg 4.3 命名空間和程序集 使用using指令簡化命名空間 C#編譯器通過using指令提供這個機制,例如 using System.IO; using System.Text; 只需要在代碼中

es6學習筆記之環境搭建與結構

全域性安裝Babel-cli 在終端中輸入以下命令,如果你安裝很慢的話,可以使用淘寶映象的cnpm來進行安裝。安裝cnpm的方法,大家自己百度吧。 npm install -g babel-cli 雖然已經安裝了babel-cli,只是這樣還不能成功進行轉換,如果你不相信可以輸入下邊的命令

C++學習筆記——名稱空間&預設引數&函式過載&引用

C++學習筆記——名稱空間&預設引數&函式過載&引用 戳這裡:我的印象筆記原連結 C++: 1.解決C語言中設計不好或者使用不是很方便的語法—>優化 2.增加新的語法特性 注:extern “C”:在C++工程中,將程式碼按照C語言的風格來編譯

CC++學習筆記第一天:MAC OS下搭建GCCSublime Text環境

本科的時候倒是學習了C/C++/Java 這一路搞研究,基本上就是網路模擬,也不太需要太多的程式設計,多半是演算法模擬,所以程式設計感覺越來越差。 人生總是那麼陰差陽錯,本科畢業的時候本來是計算機/金融雙學位,打算不再搞什麼計算機了,投身銀行算了。不料未及大四校園招聘,便被

C# 型別引用型別

值型別:int double char decimal bool enum struct 存在棧上 引用型別:string 陣列 自定義類 集合 object 介面   存在堆上 值型別在複製的時候,傳遞的是值本身, 引用型別:自定義類 引用型別在複製的時

c#中的型別引用型別 裝箱拆箱 (好文)

  一,c#中的值型別和引用型別      眾所周知在c#中有兩種基本型別,它們分別是值型別和引用型別;而每種型別都可以細分為如下型別:       什麼是值型別和引用型別 什麼是

C#型別引用型別_160928

值型別: int double char bool 引用型別: 類,陣列,介面 string型別是類,所有事引用型別 int x = 5; int y = x; y--; 值型別:修改任何一個副本,不會影響其他副本(儲存決定的) namespace value_cite

C#中型別引用型別引數傳遞

原則:儘可能控制對資料的修改,如果可以預測某個資料不會或不應該被改變,就要對其控制,而不要期望使用這個資料的呼叫者不會改變其值。 如果引數在使用過程中被意外修改,將會帶來不可預知的結果,而且這種錯誤很難被檢查到,所以我們在設計方法引數的時候,要充分考慮傳遞引用型別引數或者引用方式傳遞引用型別

C#:型別引用型別

之前有篇文章講到引數傳遞,https://blog.csdn.net/qq_38261174/article/details/84934444 但並未對值型別和引用型別做一個詳細的瞭解。 值型別和引用型別詳細的說明在右邊的網址中有:http://www.runoob.com/csharp/c

C#型別引用型別 vs Java型別引用型別

C#和Java中物件分為值型別和引用型別,不同型別的物件儲存方式不同,如果想要深入瞭解程式首先要分清楚:哪些是值型別?哪些是引用類? C#中值型別和引用型別 區別: 1、值型別分配在棧上,它的變數直接儲存變數的物件。 2、引用型別分配在棧上,它的

型別引用型別的區別?寫出C#的樣例程式碼。

值型別是在記憶體中儲存,引用型別是在記憶體中儲存一副本.你在記憶體中可以有多個某種引用物件..但是值型別始終只有一個. 最常見的值型別就是static,struct; 例如: static int a

C#基礎】型別引用型別

一、名稱空間 可以認為類是屬於名稱空間的 如果在當前專案中不存在這個類的名稱空間,需要我們手動匯入這個類所在的名稱空間 【匯入方法】(1)VS智慧提示,滑鼠點選小燈泡                 &n

C#型別引用型別淺析

C#中的型別分為兩類 型別分類1:值型別值型別變數儲存的是實際資料2:引用型別引用型別變數儲存的是實際資料所在的記憶體地址 引用型別和值型別的區別值型別是空間在棧記憶體中分配,分配的空間大小因型別的不同而不同引用型別在棧中分配的記憶體空間是相同的,不同的是在堆疊中分配的空間

C#的型別引用型別解析

值型別:byte,sbyte,short,int,long,float,double,decimal,char,uint,ushort,ulong,bool ,列舉型別,使用者定義的結構體struct 引用型別:class、delegate、dynamic、interface、object(Object)、

【Alex_筆記】CSharp--型別引用型別

一.值型別和引用型別 1.值型別 a.byte,bool,enum,struct,decimalb.都派生自System.ValueType類;但是System.ValueType又繼承自System.Object類 c.值型別不能繼承,只能實現介面(不太懂) 2.引用型