日韩欧美人妻无码精品白浆,夜夜嗨AV免费入口,国产欧美官网在线看,高校回应聋哑女生因长相完美被质疑

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中的屬性

freeflydom
2025年2月15日 11:14 本文熱度 1492

簡介

屬性是代表類的實(shí)例或類中的一個(gè)數(shù)據(jù)項(xiàng)的成員,使用屬性看起來非常像寫入或讀取一個(gè)字段,語法是相同的。

下面的代碼展示了名稱為D的類的使用,它有一個(gè)公有字段和一個(gè)公有屬性,從用法無法區(qū)分它們。

D d = new D();


d.MyField = 7; //給字段賦值

d.MyProperty = 10; //給屬性賦值

Console.WriteLine($"{d.MyField} {d.MyProperty}"); //讀取字段和屬性

與字段類似,屬性有如下特征:

1、它是命名的類成員。

2、它有類型。

3、它可以被賦值和讀取。

和字段不同的是,屬性是一個(gè)函數(shù)成員。

1、它不為數(shù)據(jù)存儲分配內(nèi)存。

2、它執(zhí)行代碼。

一個(gè)關(guān)于屬性的簡單示例

代碼如下:

public class Person

{

    private string name; // 私有字段


    public string Name

    {

        get

        {

            // 這是屬性的get訪問器,用于獲取屬性的值

            return name;

        }

        set

        {

            // 這是屬性的set訪問器,用于設(shè)置屬性的值

            name = value;

        }

    }

}

這個(gè)示例的圖示如下:

在這個(gè)示例中,Name 屬性提供了對 name 字段的訪問,但它本身并不存儲數(shù)據(jù)。當(dāng)您使用 person.Name 讀取屬性時(shí),實(shí)際上調(diào)用了屬性的get訪問器來獲取字段的值,而當(dāng)您使用 person.Name = "John" 設(shè)置屬性時(shí),實(shí)際上調(diào)用了屬性的set訪問器來設(shè)置字段的值。

屬性聲明和訪問器

set和get訪問器有預(yù)定義的語法和語義??梢园裺et訪問器想象成一個(gè)方法,帶有單一的參數(shù)“設(shè)置”屬性的值,get訪問器沒有參數(shù)并從屬性返回一個(gè)值。

set訪問器的特點(diǎn)

1、有一個(gè)單獨(dú)的、隱式的值參,名稱為value,與屬性的類型相同。

2、返回類型void。

get訪問器的特點(diǎn)

1、沒有參數(shù)。

2、返回類型與屬性類型相同。

屬性和關(guān)聯(lián)字段

屬性常和字段關(guān)聯(lián),一種常見的方式是在類中將字段聲明為private以封裝該字段,并聲明一個(gè)public屬性來控制從類的外部對該字段的訪問,和屬性關(guān)聯(lián)的字段常被稱為后備字段或后備存儲。

屬性和它們的后備字段有幾種命名約定。

一種約定是兩個(gè)名稱使用相同的內(nèi)容,但字段使用Camel大小寫,屬性使用Pascal大小寫。(Camel大小寫風(fēng)格中,復(fù)合詞標(biāo)識符中每個(gè)單詞的首字母大寫,出來第一個(gè)單詞,其余字母都是小寫,Pascal大小寫風(fēng)格中,復(fù)合詞中每個(gè)單詞的首字母都是大寫。)

另一種約定是屬性使用Pascal大小寫,字段使用相同標(biāo)識符的Camel大小寫版本,并以下劃線開始。

兩種約定的示例代碼如下:

private int firstField; // Camel大小寫

public int FirstField   // Pascal大小寫

{

get { return firstField; }

set { firstField = value;}

}

// 第二種約定的寫法

private int _secondField; // 下劃線及Camel大小寫

public int SecondField   // Pascal大小寫

{

get { return _secondField; }

set { _secondField = value; }

}

?

只讀和只寫屬性

要想不定義屬性的某個(gè)訪問器,可以忽略該訪問器的聲明。

只有g(shù)et訪問器的屬性稱為只讀屬性。只讀屬性是一種安全的,把一項(xiàng)數(shù)據(jù)從類或類的實(shí)例中傳出,而不允許太多訪問方法。

只有set訪問器的屬性稱為只寫屬性。只寫屬性是一種安全的,把一項(xiàng)數(shù)據(jù)從類的外部傳入類,而不允許太多的訪問的方法。

兩個(gè)訪問器至少有一個(gè)必須定義,否則編譯器會報(bào)錯(cuò),如下圖所示:

自動實(shí)現(xiàn)屬性

因?yàn)閷傩越?jīng)常被關(guān)聯(lián)到后備字段,C#提供了自動實(shí)現(xiàn)屬性(automatically implemented property),允許只聲明屬性而不聲明后備字段,編譯器會為我們創(chuàng)建隱藏的后備字段,并且自動掛接到get和set訪問器上。

自動實(shí)現(xiàn)屬性的注意點(diǎn):

1、不聲明后備字段,編譯器會根據(jù)屬性的類型分配存儲。

2、不能提供訪問器的方法體,它們必須被簡單地聲明為分號。get擔(dān)當(dāng)簡單的內(nèi)存讀,set擔(dān)當(dāng)簡單的寫。

3、只有通過訪問器才能訪問后備字段。因?yàn)椴荒苡闷渌姆椒ㄔL問它,所以實(shí)現(xiàn)只讀和只寫屬性沒有意義,因此必須同時(shí)提供讀寫訪問器。

一個(gè)自動實(shí)現(xiàn)屬性的示例,代碼如下:

public class Person

{

public string Name   // 沒有聲明后備字段

{

get; set;        // 訪問器的方法體被聲明為分號

}

}

internal class Program

{

static void Main(string[] args)

{

Person person = new Person();

Console.WriteLine(person.Name); // 想使用規(guī)則屬性那樣使用自動屬性

person.Name = "小王";

Console.WriteLine(person.Name);

}

}


運(yùn)行結(jié)果如下圖所示:

轉(zhuǎn)自https://www.cnblogs.com/mingupupu/p/17844001.html


該文章在 2025/2/15 11:16:27 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved