最近在學習C#有一段程式碼是這樣寫
class xx
privede string _a,_b;
public string a
{
get
{
return _a;
}
set
{
_a=value;
}
}
xx yy=new xx();
yy.a="abc" 這時就是執行SET把值傳給_a
console.write(yy.a); 這時就執行GET取_a的值
類別內的可以縮寫成public string a{get;set;}
到這邊我都可以理解但後面的就有問題了
問題一:該程碼直接這樣寫
class xxx{
public int x{get;set;}
public int y{get;set;}
}
其餘部分不重要我就省略了,在最上面的例子有定義一個private _a跟public a對應,但此串程式卻沒定義prvate,那他要get誰的屬性set誰的屬性??。
問題二:是否一定要寫個private _a跟public a來做對應??
問題三:變數是否也應該要寫成一個是_a(有底線)一個a(沒底線)的方式??
1.是不用的,如果單純{get;set;} 系統會產生內部的Field 名字是什麼不用知道。因為你只能用Propery 去存取
2.同1說明。是不用的。但如果你要玩複雜的功能,許多的Design Pattern..我都會去建立一個Field來對應
3.命名方式看妳的習慣或看Team的方式
一般的慣例
_Varity
mVarity
varity
我習慣
Field 第一字小寫
Property 第一字大寫
如果Method 有 Parameter 傳值進來
我用
this.varity 去視別Class 的Field varity 代表Parameter
回覆一:
private、public、static 指的是變數、函數、屬性、方法、物件的存取範圍,而不是你所認為的誰
回覆二:
回覆三:
再回覆一"private、public、static 指的是變數、函數、屬性、方法、物件的存取範圍,而不是你所認為的誰",這個我了解但我問的是對應的問題,如果用get跟set是不是就設定一個pivate一個public,就像我問你怎麼設定一個變數為數值int a=0就這而已這是公式,你卻回答我
int是設定為數值,不一樣的意思!
再回覆二:"1. 變數是變數,欄位是欄位,屬性是屬性,方法是方法,物件是物件,概念不同。
這跟我問的沒關係!!!!
2. 加不加底線,應該是取決於你們的 Naming Convention
所以我才會問對C#來說這是不是他的公式!!!
我的表達的不好嗎怎麼你回答的全部文不對題=="(還是感謝您的回覆)
再回覆二:"1. 變數是變數,欄位是欄位,屬性是屬性,方法是方法,物件是物件,概念不同。
這跟我問的沒關係!!!!
跟你問的沒關係?
在你舉的的例子裡,「_a」就是 pantc328 大所提的 Field,也就是敝人在下小弟我所說的「欄位」,並不是「變數」,所以我的回答並無偏離主題。
- 加不加底線,應該是取決於你們的 Naming Convention
所以我才會問對C#來說這是不是他的公式!!!
你們的命名規範如果認定所有欄位均要加底線,那 _a 這種寫法就是你們的公式
再回覆一"private、public、static 指的是變數、函數、屬性、方法、物件的存取範圍,而不是你所認為的誰",這個我了解但我問的是對應的問題,如果用get跟set是不是就設定一個pivate一個public,就像我問你怎麼設定一個變數為數值int a=0就這而已這是公式,你卻回答我
int是設定為數值,不一樣的意思!
我完全看不到你哪邊有在問「如何設定一個變數為數值」
因為在你舉的例子裡,那些東西根本就不是變數
1."你們的命名規範如果認定所有欄位均要加底線,那 _a 這種寫法就是你們的公式",就是因為不知道是不是規定要這樣寫我才會問的阿
2."我完全看不到你哪邊有在問「如何設定一個變數為數值」",我並沒有問這個,這只是我舉例你所回答我的答案跟我問的不一樣
2."我完全看不到你哪邊有在問「如何設定一個變數為數值」",我並沒有問這個,這只是我舉例你所回答我的答案跟我問的不一樣
那只好請你原諒我說重話了
麻煩想清楚自己的問題到底是什麼
再來發問
那我也只好講重話了,如果看不懂問題也請勿亂回答
看熱鬧的也要說重話了,....這問題到底重在那裏...可否重重地說一下....