C 中屬性可以用相應的get方法來代替嗎?

2025-01-08 16:00:11 字數 5552 閱讀 7765

1樓:網友

get和set是關鍵字。應該竟是不可代替的。

代替是什麼意思?

可以用函式,就是方法來代替get和set的功能,但是就不能使用「=」運算子了,只能用函式,方法的通常形式";"

也可以將變數直接暴露為public,可是這樣就不能對賦值以及獲取過程進行控制。

比如你想知道程式執行中你想知道物件a的a屬性(prv_a用於儲存a)被獲取多少次,你可以在a裡新增私有屬性a_n,然後get裡多寫一句"a_n++;

又比如你想防止乙個a被賦予乙個小於0的值,你可以在set裡多寫幾句。

if(value<0)

prv_a=0;

elseprv_a=value;

這樣當別的程式設計師使用你的物件a如下:

但是的得到的結果卻依然是;

2樓:網友

string a;

geta()

return a;

string b;

getb()

return b;

seta(int x)

a=x;樓主這意思吧。

可以 但是麻煩。

c# 中可以用方法代替屬性嗎?

3樓:天道周星

屬性是一種殊的方法,一般的用法是定義乙個公有的屬性來封裝乙個私有的欄位,限制欄位是否可讀可寫,並可在讀寫控制中對其進行一些判斷與驗證等,防止輸入錯誤無效的值,當然也不必何欄位一一對應,在屬性的訪問函式中還可以進行其它各種控制和計算。

方法可以完成和屬性一樣的功能,但相對來說屬性更為簡便。

4樓:網友

int size;

方法:public int getsize() public void setsize (int value)

屬性:public int size set }一般情況屬性可以用以上方法代替。

但屬性的有讀寫器get與set,也就是可以設定屬性的是否唯讀readonly(只寫get)或只寫writeonly(只寫set,不建議設定只寫屬性)

ps:c#中不支援用readonly和writeonly申明屬性。

如果用的話,用readonly申明屬性的時候不能寫set,用writeonly申明屬性的時候不能寫get.

5樓:理工愛好者

c#的屬性, 實際上生成的中間**還是方法。

6樓:冰之軍

恩。。這個問題簡單。。一般人都是為了安全。

private string name;

public string name

set}看到上面的沒。我們是直接呼叫name賦值。。name是私有的。外部類不能隨便訪問。

屬性在外部類賦值中使用較多。跨類用比較爽。

7樓:網友

可以認為屬性是一種特殊的方法。

c#中的屬性get和set到底是什麼意思

8樓:網友

get是給屬性賦值,set是取屬性的值。

get、set用法:

一是隱藏元件或類內部的真是成員;

二是用來建立約束的,比如,實現「有我沒你」這種約束;

三是用來響應屬性變化事件,當屬性變化是做某事,只要寫在set方法裡就行。

當你想讀出或寫入屬性的值時,存取標誌限定了被實現的語句。用於讀出屬性的值的存取標誌記為關鍵字get,而要修改屬性的值的讀寫符標誌記為set。

下面是示例**:

public class student

這裡是給私有屬性name賦值。

get//這裡取出私有屬性name的值 }

9樓:

get和set是c#定義屬性的規範,看以下示例:

public class person

可以通過 person的例項來訪問name,返回私有變數_name的值。

private set //不允許外部賦值,只能在person內部賦值,value就是賦過來的值}}

10樓:網友

private int a;是類變數。

private int b

set }是類屬性。

value表示這個屬性本身。

11樓:網友

這是c#的乙個語法規則!

在c#中,屬性同時必須定義get()和set()方法嗎?為什麼?

12樓:大加索爾

不一定。可以只有get()方法或者只有set()方法。

也可以get()和set()方法都有。

只有get()方法的屬性叫做唯讀屬性,只能讀取,不能寫入。

同樣,只有set()方法的屬性叫做只寫屬性,只能寫入,不能讀取。

兩者都有的既可以讀取,也可以寫入。

c#裡的 自動屬性是不是相當於簡寫了 通常的setget方法,以下這麼寫對麼

13樓:網友

public class aaa

set}與以下的寫法一樣的。

public class aaa}

c#get和set用法詳解

14樓:非常可愛

1、當引用屬性時,除非該屬性為賦值目標,否則將呼叫get訪問器讀取該屬性的值。

例如:employeee1=newemployee();//thegetaccessorisinvokedhereget

訪問器必須在return或throw語句中終止,並且控制不能超出訪問器體。

2、set訪問器與返回void的方法類似,它使用稱為value的隱式引數,此引數的型別是屬性的型別。

set訪問器被新增到name屬性:

publicstringname

set}當對屬性賦值時,用提供新值的引數呼叫set訪問器。

例如:"joe";//thesetaccessorisinvokedhere在set訪問器中對區域性變數宣告使用隱式引數名(value)是錯誤的。

15樓:江城

首先,get和set是屬。

抄性特有的兩個方法。屬性是對欄位的封裝,是為了程式資料的安全性考慮的。總的來說,欄位有兩種操作許可權,就是獲取和修改,就分別對應的是get和set方法了,可以通過制定get和set方法來限定欄位的訪問許可權。

例如:private int _age;//年齡 欄位public int? age

set}

16樓:

set就是公共屬性設定值,get就是獲取公共屬性的值。

為什麼c#中要用屬性來封裝欄位有什麼好處?我可以把欄位宣告為私有的,然後用兩個public方法來代替get,s

17樓:沉默海賊

幫助別人就是幫助自己! 如果這裡解決了您的問題,請您點一下推薦 × 為什麼c#中要用屬性來封裝欄位有什麼好處?我可以把欄位宣告為私有的,然後用兩個public方法來代替get,set塊啊!!!

c#語言5 次瀏覽 2008-09-04 17:5512 個回答 可以控制變數是否可以讀取而不寫入,或者是僅僅寫入而不讀取,或者可讀可寫!

首先private string name;

public string name

set}這樣看起來美觀~ 程式的可讀性好,結構也清晰,它有保護資料的作用。

引入屬性這個概念純粹是為了提高**的可讀性。

當然如果你一定要說直接寫成方法可讀性會更好,那也沒辦法,這是個見仁見智的問題。

但別忘了。net是誰設計的。

不過屬性的乙個簡單的使用就是在設定或獲取的過程成,可以自動呼叫其他的方法。

c# codepublic propertytest ; set ; 其實在內部是自動吧每個屬性前加上 get_**set_**的,實際上也是方法的實現而已。 2008-09-05 20:22 推薦:

0 次 有幫助? 請推薦 其實兩種實現都差不多,但封裝起來,用起來比較靈活點。。。2008-09-05 21:

c#程式設計,屬性那裡,使用get,set有什麼好處嗎?

18樓:匿名使用者

嚴格來講,這是物件導向中「封裝」這一概念的體現,為了保證**的安全性。get,set是「屬性」這一概念中的2個方法。俗稱「訪問器」。

舉乙個不太恰當的例子,3個人:老闆,秘書,員工,秘書就是」屬性「,get-》秘書將老闆的指示傳遞給員工,set-》秘書將員工的意見傳遞給老闆。為的就是不讓員工和老闆直接接觸,如果這個員工是恐怖組織的成員,那多危險是吧?

19樓:匿名使用者

這個就是這麼用的啊,欄位是私有的,只能通過get set來給欄位賦值或取值,保證欄位的私有性,外面不能自己隨便給他們賦值,這裡還可以進行非法值判斷。

20樓:匿名使用者

屬性用於保護欄位,就像委託變數和事件的關係一樣,只不過欄位是,事件是remove,add

21樓:匿名使用者

有get的可以獲取值,有set的可以賦值。有些屬性只讓取值不讓賦值,就只寫get方法。。。

22樓:網友

是封裝,也就是拆箱和裝箱。好處主要是為了降低元件之間的耦合度,以提高擴充套件性和維護性。

23樓:匿名使用者

封裝的好處,讓你只能通過程式規定方法來訪問,限制不合理操作(抖胸)

24樓:匿名使用者

可以對相應欄位在存取操作時做檢查 保證資料的安全和合法。

25樓:匿名使用者

封裝,不讓使用者知道里面是什。

26樓:匿名使用者

get和set {}這個裡頭可以做很多事情。

c#中get,set屬性的作用是什麼?

27樓:seo行者

1> get和set把讀取和設定分開,這樣的**更容易維護。 在封裝資料庫欄位的時候非常有用。

get在屬性中就是讀取屬性值,當然,你可以對當前的值進行加工後再返回。

set則相反,在設定屬性值的時候被執行。可以用來驗證設定的值以及進行其他相關處理。

2>一般類是public的,那設定的值也需要是public的。

28樓:網友

如果有乙個小狗類。

小狗都有四條腳,這是固定的,不能改變,所以它的腳屬性就不能隨便設了,既為唯讀,這個時候就要用到get而不必用到set ,不然就可以隨便設定,比如設為小狗為5條腳,這就不合適了。相反地,如果有乙個屬性只需要設定而不需要讀取,就用set就行了。如果既要讀又要寫,那就用set和get結合。

如果小狗還有乙個年齡屬性,還可以在set 裡面設定一下值的範圍,比如if(value<20)age=value; 這樣就保證了合理的年齡,你不能設為100歲吧,不然都成神。

一般把類中的欄位設為private,把屬性設為public.如public class dog

get}}

c中可以用delete釋放陣列的空間嗎

這樣定義陣列的話是在棧上分配記憶體,超過作用域範圍的時候會自動釋放掉,使用new操作符分配的記憶體,是在堆上,需要使用delete釋放,因此如果像你那樣定義陣列的話,不必釋放記憶體 用delete釋放的只能是用new動態分配的陣列空間,若陣列不是動態分配的則不能用delete釋放。舉兩個例子詳細說明...

在中,可以用滑鼠拖動的方法實現文字塊的移動,具體操作是,先選定文字塊,然後

應該是b d對,a是複製,c不起作用。word 2010測試通過。19 在word的文件中,選定文件某行內容後,使用滑鼠拖動方法將其移動時,配合的鍵盤操作是 移動不用配合什麼鍵,直接拖動就行,複製的話可配合ctrl鍵。其實這個只要我自己試下不就可以知了,不用問人也行啊。如果想移動可以bai選中後按f...

表示顏色可以用color的什么方法

color類中有一個構造方法可以傳入三個int值,分別代表rgb顏色的值。color c new color int a,ing g,int b 設定color的rgb顏色值即可。color c new color int a,ing g,int b 設定color的rgb顏色值即可。ios如何使用...