C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化實例分析
本文實例分析了C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化,分享給大家供大家參考。具體分析如下:
假設(shè)有這樣一個值類型struct,如下所示:
public struct Size { public int Length; public int Width; public int Area() { return Length*Width; } }
一、客戶端,給所有struct字段初始化后調(diào)用方法
class Program { static void Main(string[] args) { Size size; size.Length = 10; size.Width = 5; Console.WriteLine(size.Area()); Console.ReadKey(); } }
結(jié)果:50
二、客戶端,給部分struct字段初始化
class Program { static void Main(string[] args) { Size size; size.Length = 10; Console.WriteLine(size.Area()); Console.ReadKey(); } }
結(jié)果:報錯,使用了未賦值的局部變量。
可見:如果想調(diào)用struct實例的任何方法,需要給struct的所有字段初始化。
三、客戶端,通過構(gòu)造函數(shù)初始化struct
class Program { static void Main(string[] args) { Size size = new Size(); Console.WriteLine(size.Area()); Console.ReadKey(); } }
結(jié)果:0
在這里:通過struct構(gòu)造函數(shù)創(chuàng)建實例,實際上是給struct的所有字段賦上了初值0。
總結(jié):
在調(diào)用struct實例方法之前,必須給struct的所有字段賦上初值,即要求完全初始化,部分初始化是不允許的。要么通過"struct實例.字段名"給所有字段顯式賦值,要么通過struct構(gòu)造函數(shù),給所有字段賦上默認(rèn)值。
希望本文所述分析對大家C#程序設(shè)計的學(xué)習(xí)有所幫助。
- C#調(diào)用C類型dll入?yún)閟truct的問題詳解
- C#使用struct直接轉(zhuǎn)換下位機數(shù)據(jù)的示例代碼
- C#中的只讀結(jié)構(gòu)體(readonly struct)詳解
- 區(qū)分C# 中的 Struct 和 Class
- 淺析C# 結(jié)構(gòu)體struct
- C#如何從byte[]中直接讀取Structure實例詳解
- 深入解析C#編程中struct所定義的結(jié)構(gòu)
- C#中struct和class的區(qū)別詳解
- C# Struct的內(nèi)存布局問題解答
- 深入探討C#中的結(jié)構(gòu)struct
- c# Struct的一些問題分析
相關(guān)文章
總結(jié)C#動態(tài)調(diào)用WCF接口的兩種方法
這篇文章給大家總結(jié)了C#動態(tài)調(diào)用WCF接口的兩種方法,大家可以根據(jù)自己的需求選擇對應(yīng)的方式,下面來一起看看。2016-09-09C#動態(tài)生成DropDownList執(zhí)行失敗原因分析
這篇文章主要介紹了C#動態(tài)生成DropDownList執(zhí)行失敗原因分析,以一個實例形式分析了C#動態(tài)生成DropDownList的相關(guān)注意要點與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03