C屬性 欄位 變數

時間 2021-05-04 21:50:01

1樓:來元彤

c#的欄位就是指私有域(變數)

class a

set}

}其中,i是欄位,i是屬性,

欄位是屬於一個類的,在類中定義(注意:是類中,而不是類中的某個方法或屬性中)

在本類中可以用

this.欄位名訪問

且本類中的所有屬性、方法等都可以訪問

也就是說它的作用域是整個類。

而區域性變數是屬於一個函式或語句塊的

它的作用域是從定義開始,到離開語句塊。

c#中的變數、欄位、域、屬性、屬性過程

在c#中:

域: 表示與物件或類相關聯的變數,修飾符不論是不是public。(與欄位類似)

欄位: 表示與物件或類相關聯的變數。通常來講修飾符是public的成員變數稱為欄位,而private更適合說是區域性變數。(與域類似)

屬性: 表示域或欄位的自然擴充套件,使得在保證封裝性的基礎上實現了訪問私有成員的便捷性。

域域表示與物件或類相關聯的變數,宣告格式如下:

attributes field-modifiers type variable-declarators;

域的修飾符field-modifiers可以是:new、public、protected、internal、private、static、readonly。實際上,域相當於c++中的簡單成員變數。

在下面的**中,類a包含了三個域:公有的x和y,以及私有的z。

class a

欄位欄位是與物件或類相關聯的變數。

當一個欄位宣告中含有static修飾符時,由該宣告引入的欄位為靜態欄位(static field)。它只標識了一個儲存位置。不管建立了多少個類例項,靜態欄位都只會有一個副本。

當一個欄位宣告中不含有static修飾符時,由該宣告引入的欄位為例項欄位(instance field)。類的每個例項都包含了該類的所有例項欄位的一個單獨副本。

在下面的示例中,color類的每個例項都有r,g,b例項欄位的不同副本,但是black,white,red,green和blue等靜態欄位只有一個副本:

public class color

}如示例所示,通過readonly修飾符宣告只讀欄位。給readonly欄位的賦值只能作為宣告的組成部分出現,或者在同一類中的例項建構函式或靜態建構函式中出現。

屬性為了類的封裝性,一般是把欄位設為private, 把屬性設為公有來操作欄位。

屬性(property)是欄位的自然擴充套件,兩者都是具有關聯型別的命名成員,而且訪問欄位和屬性的語法是相同的。然而,屬性與欄位不同,不表示儲存位置。相反,屬性有訪問器(accessor),這些訪問器指定在它們的值被讀取或寫入時需執行的語句。

屬性的宣告類似於欄位,不同之處在於屬性的宣告以定界符{}之間的get訪問器和/或set訪問器結束,而不是分號。同時包含get訪問器和set訪問器的屬性稱為讀寫屬性(read-write property)。只具有get訪問器的屬性稱為只讀屬性(read-only property)。

只具有set訪問器的屬性稱為只寫屬性(write-only property)。

get訪問器相當於一個具有屬性型別返回值的無引數方法。除了作為賦值的目標外,當在表示式中引用屬性時,會呼叫該屬性的get訪問器以計算該屬性的值。

set訪問器相當於一個具有單個名為value的引數和無返回型別的方法。當一個屬性作為賦值的目標,或者作為++或--運算子的運算元被引用時,就會呼叫set訪問器,所傳遞的自變數將提供新值。

list類宣告瞭兩個屬性count和capacity,依次是隻讀和只寫的。下面是使用這些屬性的示例:

list names = new list();

names.capacity = 100; //呼叫set訪問器

int i = names.count; //呼叫get訪問器

int j = names.capacity; //呼叫get訪問器

與欄位和方法類似,對於例項屬性和靜態屬性,c#兩者都支援。靜態屬性是宣告中具有static修飾符,而例項屬性則沒有。

屬性的訪問器可以是虛擬的。當屬性宣告中包含virtual,abstract,override修飾符時,它們將運用到屬性訪問器。

來自msdn中的內容:

屬性與欄位

屬性與欄位都可在物件中儲存和檢索資訊。它們的相似性使得在給定情況下很難確定哪個是更好的程式設計選擇。

在以下情況下使用屬性過程:

1. 需要控制設定或檢索值的時間和方式時。

2. 屬性有定義完善的一組值需要進行驗證時。

3. 設定值導致物件的狀態發生某些明顯的變化(如 isvisible 屬性)。

4. 設定屬性會導致更改其他內部變數或其他屬性的值時。

5.必須先執行一組步驟,然後才能設定或檢索屬性時。

在以下情況下使用欄位:

1. 值為自驗證型別時。例如,如果將 true 或 false 以外的值賦給 boolean 變數,就會發生錯誤或自動資料轉換。

2. 在資料型別所支援範圍內的任何值均有效時。single 或 double 型別的很多屬性屬於這種情況。

3. 屬性是 string 資料型別,且對於字串的大小或值沒有任何約束時。

visual basic中屬性和變數的差異(在c#中應該也是一樣的)

變數和屬性都表示可以訪問的值。但在儲存和實現方面有所不同。

變數變數 直接對應於記憶體位置。可以使用單個宣告語句定義變數。變數可以是「區域性變數」,在過程中定義且僅可用於該過程;它也可以是「成員變數」,在模組、類或結構中定義,但不在任何過程中定義。

成員變數又稱「欄位」。

屬性屬性 是在模組、類或結構中定義的資料元素。使用 property 和 end property 語句之間的**塊定義屬性。此**塊包含一個 get 過程t或一個 set 過程,或兩者都包含。

這兩個過程稱為「屬性過程」或「屬性訪問器」。除了檢索或儲存屬性的值外,它們還可以執行自定義操作,如更新訪問計數器。

不同點下表指出了變數和屬性之間的一些重要差異。

差異點 變數 屬性

宣告 單個宣告語句 **塊中的一系列語句

實現 單個儲存位置 可執行**(屬性過程)

儲存 直接與變數的值關聯 通常包含內部儲存;在屬性的包含類或模組外部,這些內部儲存不可用屬性的值可能作為也可能不作為一個儲存元素(見下(1))

存在可執行** 無 至少必須有一個過程

讀寫訪問許可權 讀/寫或只讀 讀/寫、只讀或只寫

自定義操作 不可能 可以當作部分設定或檢索屬性值執行

註解:(1)和變數不同,屬性的值可能不直接對應於單個儲存項。為方便或安全起見,儲存可能拆分為幾塊;也可能以加密格式儲存值。

在這些情況下,get 過程將彙編這些塊或解密儲存值,然後 set 過程會加密新值或將其拆分到構成儲存的各個組成部分中。屬性值可以是臨時的,如一天中的某個時間,在這種情況下,每次訪問此屬性時,get 過程將及時計算此屬性。

類與模組之間的差異

類和模組之間的主要差異在於:類可以例項化為物件,而標準模組則不能。

2樓:匿名使用者

變數舉例:

string a="";

欄位與屬性是相對於類來說的;在類裡面把資料成員叫做欄位,通常定義為似有欄位,加訪問修飾符private,屬性是對私有欄位的封裝,供類在外部訪問,對於類外部來說,只能看到屬性,不能看到私有欄位,對屬性的存取操作就是對類的私有成員的操作!

舉個例子:

class a

set}

}這樣當你訪問類a的私有欄位_strname時,就可以通過strname來訪問了!

3樓:

首先 我們得知道什麼是欄位。

我們通常會記錄一些資訊 然後如何記錄呢

比如你現在要配比一個藥方 別人肯定是這麼描述的

當歸4錢 胖大海一錢……

計算機世界裡 我們要記錄這些資訊 這時候我們就需要欄位 也就是我們宣告的變數

那有人又要問了。既然有了變數 我把變數宣告成public 直接用(例項.變數)不就可以訪問了嗎?

為什麼還要屬性這麼多餘的東西呢?

這是因為有些東西 我們不想暴露給別人 你宣告的變數可能會給別人去用 如果別人具有隨便讀寫這個欄位的許可權 就很難保證欄位的正確和安全性

所以屬性裡可控制對欄位的讀寫許可權(get是讀,set是寫) 再來談談他的正確性

如果你要記錄一個學生的數學成績(假設滿分是100)結果有人把這個記錄數學成績的欄位設定為150或者-1,那麼顯然是錯的。我們可以在屬性里加以控制,減少這種錯誤!

4樓:

public class class2

set }}

5樓:表聽國勝

相信它們各自的定義你應該是有的,我就說說它們之間的區別吧:

一.和變數不同,屬性的值可能不直接對應於單個儲存項。為方便或安全起見,儲存可能拆分為幾塊;也可能以加密格式儲存值。在這些情況下,get

過程將彙編這些塊或解密儲存值,然後

set過程會加密新值或將其拆分到構成儲存的各個組成部分中。屬性值可以是臨時的,如一天中的某個時間,在這種情況下,每次訪問此屬性時,get

過程將及時計算此屬性。

二.屬性與欄位

屬性與欄位都可在物件中儲存和檢索資訊。它們的相似性使得在給定情況下很難確定哪個是更好的程式設計選擇。

在以下情況下使用屬性過程:

1.需要控制設定或檢索值的時間和方式時。

2.屬性有定義完善的一組值需要進行驗證時。

3.設定值導致物件的狀態發生某些明顯的變化(如isvisible

屬性)。

4.設定屬性會導致更改其他內部變數或其他屬性的值時。

5.必須先執行一組步驟,然後才能設定或檢索屬性時。

在以下情況下使用欄位:

1.值為自驗證型別時。例如,如果將

true

或false

以外的值賦給

boolean

變數,就會發生錯誤或自動資料轉換。

2.在資料型別所支援範圍內的任何值均有效時。single或double

型別的很多屬性屬於這種情況。

3.屬性是

string

資料型別,且對於字串的大小或值沒有任何約束時。

c什麼是類 物件 方法 屬性 欄位 函式

天蠍小灰馬 1.在c 中。類是主要的型別。類宣告定義新的引用型別。一個類可以從另一個類繼承。並且可以實現介面。類成員可以包括常數 欄位 方法 屬性 事件 索引器 運算子 例項建構函式 解構函式 靜態建構函式和巢狀型別宣告。每個成員都有關聯的可訪問性。它控制能夠訪問該成員的程式文字區域。有五種可能的可...

VFP怎樣選擇欄位,VFP中如何給欄位變數賦值?

使用巨集替換 的方法對錶進行過濾 假如 thisform.txt1.value 是你輸入的欄位名 一月收入,二月收入,三月收入,那麼在thisform.txt1.valid 事件中寫入以下 cur field allt thisform.txt1.value 1000 sele 表名 setfilt...

C 類中的定義的變數是什麼屬性?和主函式中直接定義的變數有衝突嗎?和類成員函式中的變數有衝突嗎

沒有衝突,他們是變數,不存在優先順序的問題,但是他們的生存期不同,使用時,的形式也不同。比如 類poin的物件為m poin,裡面有成員變數a,主函式中也有變數a,那麼我們使用時,a 2,指的就是主函式中的變數a,而m poin.a 2指的則是類的物件中的成員變數a.成員函式中的變數只在呼叫函式時生...