日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#定义类属性

發(fā)布時(shí)間:2025/4/16 C# 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#定义类属性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、定義屬性

1.屬性擁有兩個(gè)類似于函數(shù)的代碼塊,一個(gè)用于獲取屬性的值(get),一個(gè)用于設(shè)置屬性的值(set),這兩個(gè)塊也稱為訪問器,可以用于控制對(duì)屬性的訪問級(jí)別。

2.屬性至少要包含一個(gè)塊才是有效的,可以忽略其中一個(gè)來創(chuàng)建只讀(只有g(shù)et塊)或只寫(只有set塊)屬性。當(dāng)然,這僅適用于外部代碼,因?yàn)轭愔械拇a可以訪問這些塊能訪問的數(shù)據(jù)。

3.可以在訪問器上包含可訪問關(guān)鍵字,如使get塊變成公共的,把set塊變成受保護(hù)的。

4.屬性的基本結(jié)構(gòu)包括標(biāo)準(zhǔn)的要可訪問關(guān)鍵字(public、private等)后跟類名、屬性名和get塊/set塊,語法:

public int MyIntProp

{

get {}

set {}

}

注:定義屬性的第一行非常類似于定義字段,區(qū)別是行末沒有分號(hào)。

5.get塊必須有一個(gè)屬性類型的返回值。簡單的屬性一般與一個(gè)私有字段相關(guān)聯(lián),以控制對(duì)這個(gè)字段的訪問,此時(shí)get塊可以直接返回該字段的值。

如:private int myInt;??? //定義字段

??? public int MyIntProp//定義屬性

{

get{ return myInt; }

}

6.set塊以類似的方式把一個(gè)值賦給字段,這里可以使用關(guān)鍵字value引用用戶提供的屬性值,并可以對(duì)value進(jìn)行判斷等**作。

如:private int myInt;??? //定義字段

??? public int MyIntProp//定義屬性

{

get{ return myInt; }

set{ if (value >= 0 && value <= 10)myInt = value; }

}

注:當(dāng)賦給屬性的值超出set 代碼中限定的時(shí)候,可以有四種方法進(jìn)行處理:

?? 什么也不做(如上述代碼所示);

?? 給字段賦默認(rèn)值;

?? 繼續(xù)執(zhí)行,就好像沒有發(fā)生錯(cuò)誤一樣,但記錄下該事件,以備將來分析;

?? 拋出一個(gè)異常;

一般情況下,后兩種方法比較好。采用第四種方法時(shí),可使用標(biāo)準(zhǔn)的System異常。

如:set{

??????? if (value >= 0 && value <= 10) intVal = value;

????????? else

throw (newArgumentOutOfRangeException("Val", value, "Val must be assigned a value between 0 and 10."));

???? }

可以在使用屬性的代碼中通過try…catch…finally邏輯來處理。

7.屬性可以使用virtual,override和abstract關(guān)鍵字,就像方法一樣,但這幾個(gè)關(guān)鍵字不能用于字段。

8.訪問器可以使用什么可訪問的關(guān)鍵字,取決于屬性的可訪問性。訪問器的可訪問性不能高于它所屬的屬性,也就是說,私有屬性對(duì)它的訪問器不能包含任何可訪問關(guān)鍵字

?

旅館對(duì)住宿人員進(jìn)行登記,要記錄的信息有:客人姓名、性別、所住的房間號(hào)、已住宿的天數(shù)。這里,客人的姓名和性別一經(jīng)確定就不能理更改了,用戶可以要求改變房間,住宿的天數(shù)當(dāng)然也是不斷變化的。我們?cè)陬惖臉?gòu)造函數(shù)中對(duì)客人的姓名和性別進(jìn)行初始化,在四個(gè)屬性中,客人的姓名和性別是只讀的,故只具有g(shù)et訪問器;房間號(hào)和住宿天數(shù)允許改變,同時(shí)具有set訪問器和get訪問器。

?

using System;
class Program
{
static void Main()
{
?? Customer c=new Customer("王玉珍",Customer.sex.女,"7",10);
?? Console.WriteLine("旅館住宿人員的姓名為{0},姓名為{1},門牌號(hào)碼{2},共住了{(lán)3}天。",c.Name,c.Sex,c.No,c.Day);
?? Console.ReadKey();
}
}
public class Customer
{
public enum sex
{
?? 男, 女
};
public string s_name;
public string Name
{
?? get
?? {
??? return s_name;
?? }
}
private sex m_sex;
public sex Sex
{
?? get
?? {
??? return m_sex;
?? }
}
private string s_no;
public string No
{
?? get
?? {
??? return s_no;
?? }
?? set
?? {
??? if (s_no != value)
??? {
???? s_no = value;
??? }
?? }
}
private int i_day;
public int Day
{
?? get
?? {
??? return i_day;
?? }
?? set
?? {
??? if (i_day != value)
??? {
???? i_day = value;
??? }
?? }
}
public Customer(string name, sex sex, string no, int day)
{
?? s_name = name;
?? m_sex = sex;
?? s_no = no;
?? i_day = day;
}
}

總結(jié)

以上是生活随笔為你收集整理的C#定义类属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。