C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化實(shí)例分析
本文實(shí)例分析了C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化,分享給大家供大家參考。具體分析如下:
假設(shè)有這樣一個(gè)值類型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é)果:報(bào)錯(cuò),使用了未賦值的局部變量。
可見(jiàn):如果想調(diào)用struct實(shí)例的任何方法,需要給struct的所有字段初始化。
三、客戶端,通過(guò)構(gòu)造函數(shù)初始化struct
class Program
{
static void Main(string[] args)
{
Size size = new Size();
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
結(jié)果:0
在這里:通過(guò)struct構(gòu)造函數(shù)創(chuàng)建實(shí)例,實(shí)際上是給struct的所有字段賦上了初值0。
總結(jié):
在調(diào)用struct實(shí)例方法之前,必須給struct的所有字段賦上初值,即要求完全初始化,部分初始化是不允許的。要么通過(guò)"struct實(shí)例.字段名"給所有字段顯式賦值,要么通過(guò)struct構(gòu)造函數(shù),給所有字段賦上默認(rèn)值。
希望本文所述分析對(duì)大家C#程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
- C#調(diào)用C類型dll入?yún)閟truct的問(wèn)題詳解
- C#使用struct直接轉(zhuǎn)換下位機(jī)數(shù)據(jù)的示例代碼
- C#中的只讀結(jié)構(gòu)體(readonly struct)詳解
- 區(qū)分C# 中的 Struct 和 Class
- 淺析C# 結(jié)構(gòu)體struct
- C#如何從byte[]中直接讀取Structure實(shí)例詳解
- 深入解析C#編程中struct所定義的結(jié)構(gòu)
- C#中struct和class的區(qū)別詳解
- C# Struct的內(nèi)存布局問(wèn)題解答
- 深入探討C#中的結(jié)構(gòu)struct
- c# Struct的一些問(wèn)題分析
相關(guān)文章
C#使用DateTime獲取日期和時(shí)間的實(shí)現(xiàn)
在C#中,DateTime類是用來(lái)處理日期和時(shí)間的類,它具有許多屬性和方法,用于操作和獲取日期和時(shí)間的不同部分,本文就來(lái)介紹一下C#使用DateTime獲取,感興趣的可以了解一下2023-11-11
C#學(xué)習(xí)筆記- 淺談數(shù)組復(fù)制,排序,取段,元組
下面小編就為大家?guī)?lái)一篇C#學(xué)習(xí)筆記- 淺談數(shù)組復(fù)制,排序,取段,元組。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
C#判斷一個(gè)字符串是否是數(shù)字或者含有某個(gè)數(shù)字的方法
這篇文章主要介紹了C#判斷一個(gè)字符串是否是數(shù)字或者含有某個(gè)數(shù)字的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
C# 使用Fiddler捕獲本地HttpClient發(fā)出的請(qǐng)求操作
這篇文章主要介紹了C# 使用Fiddler捕獲本地HttpClient發(fā)出的請(qǐng)求操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記
這篇文章主要介紹了C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記,本文給出一個(gè)簡(jiǎn)單子實(shí)例講解C#中的繼承,并講解了一些C#繼承的知識(shí)技巧,需要的朋友可以參考下2015-01-01
C#?winform?窗體控件跨線程訪問(wèn)的實(shí)現(xiàn)
在做winform開(kāi)發(fā)時(shí),如果在子線程中去設(shè)置主線程中UI控件的屬性,會(huì)出現(xiàn)“跨線程調(diào)用異常”,本文就來(lái)介紹一下C#?winform?窗體控件跨線程訪問(wèn)的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12
unity3D實(shí)現(xiàn)攝像機(jī)抖動(dòng)特效
這篇文章主要為大家詳細(xì)介紹了unity3D實(shí)現(xiàn)攝像機(jī)抖動(dòng)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C#獲取系統(tǒng)當(dāng)前IE版本號(hào)
這篇文章主要為大家詳細(xì)介紹了C#獲取系統(tǒng)當(dāng)前IE版本號(hào),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12

