【.net基礎】--初識Struct
其實之前學習C#的時候有接觸,不過那個時候還小~
記得老師講作業系統的時候說過這樣一句話,軟體和硬體最大的區別就是變化。Struct是為了迎合使用者日益增長的需求而產生的。開始的時候用變數來存放資料,後來誕生了陣列,可以放很多資料型別一致的資料,Struct用來封裝小型變數組,包含不同的資料型別。
Struct結構上跟類很相似,不過兩者也有不同。Struct是值型別,例項化在棧上,不能被繼承,預設是public,適用於經常使用的一些資料組合成的新型別; Class是物件型別,例項化在堆上,可以被繼承,預設private,適合大的複雜的資料.
下面是一個demo,關於Struct和Class的對比。
class TheClass
{
public int x;
}
struct TheStruct
{
public int x;
}
class TestClass
{
public static void structtaker(TheStruct s)
{
s.x = 5;
}
public static void classtaker(TheClass c)
{
c.x = 5;
}
static void Main(string[] args)
{
TheStruct a = new TheStruct();
TheClass b = new TheClass();
a.x = 1;
b.x = 1;
structtaker(a);
classtaker(b);
Console.WriteLine("a.x={0}", a.x);
Console.WriteLine("b.x={0}", b.x);
}
}
效果圖:
此結果說明class傳遞的是一個引用,傳遞給classtaker的也是b中的引用,函式裡面引數引用的和main裡面b引用的是同一塊記憶體,都在堆裡面,所以函式的改變b會反映到main裡面的b。struct傳遞是值,而非引用,是實參a的copy值,形參a儲存在堆裡面,main裡面的a儲存在棧裡面,函式改變a的值不會影響到main裡面a的值。
知識對比著學才會更加深刻,應用的時候才可以區分的開。學會利用以前的知識網路,很重要。現在的理解還很表面,以後做專案用到,體會跟感悟會更深的!
相關文章
- CSS 基礎知識 初識CSS
- Python基礎初識Python
- 初識Java Java基礎知識Java
- 【Java基礎】01初識JavaJava
- 【WEB基礎】HTML & CSS 基礎入門(1)初識WebHTMLCSS
- MyBatis 框架系列之基礎初識MyBatis框架
- jsp基礎-初識jspJS
- [JavaScript基礎] 函式,初識作用域JavaScript函式
- 初識java day01(基礎篇)Java
- C++基礎:: struct vs classC++Struct
- C#.Net築基-基礎知識C#
- IdentityServer4系列 | 初識基礎知識點IDEServer
- Linux基礎入門(一)初識ShellLinux
- 前端-基礎知識體系(初級-上)前端
- 前端-基礎知識體系(初級-下)前端
- 初識Linux教程:Linux基礎(轉)Linux
- 【知識分享】 伺服器基礎知識【初學者必看】伺服器
- 【smile】自學.NET之路-基礎知識
- Pandas 基礎 (1) - 初識及安裝 yupyter
- 初識 weex 系列(前端視角) - 基礎完結前端
- 初觸hibernate--基礎知識盲區
- 初識Kubernetes
- 一、初識NettyNetty
- 初識ABP vNext(1):開篇計劃&基礎知識
- Java初學者必備4大核心基礎知識Java
- flutter初體驗之基礎控制元件知識Flutter控制元件
- Java最最基礎的知識(適合初學者看)Java
- Netty1:初識NettyNetty
- ASP.NET Core基礎知識(四)【路由】ASP.NET路由
- ASP.NET Core基礎知識(一)【概述】ASP.NET
- ASP.NET程式安全的基礎知識ASP.NET
- python基礎知識之函式初階——閉包Python函式
- Java初學者需掌握的4大核心基礎知識!Java
- Python 基礎起步 (七) 初識字典 Dictionary(絕命毒師前傳)Python
- Python基礎之:struct和格式化字元PythonStruct字元
- C++基礎(八)struct和class的區別C++Struct
- OpenGL/OpenGL ES 入門:基礎變換 - 初識向量/矩陣矩陣
- 鴻蒙初學002-應用程式包基礎知識鴻蒙