Q1:
一般在写class的时候,为了避免直接存取member variable
都会将他设为private或是protected
然后提供Get/Set的method来让其他人存取
后来看到C#提供Property来简化这步骤,程式码大概如下:
==================================================
private String Text1 = "";
public String textValue
{
set { Text1 = value; }
get { return Text1; }
}
==================================================
当下看到的想法是这个写法变得好简洁
可是当我看到更进一步的简化时,则开始有疑惑
===================================================
public String Text1 { get; set; }
===================================================
这样Text1到底应该算是个method还是member variable?
虽然说Text1本身不会存取变量,而是另外将值存取到隐藏(?)的变量
但class本身并没有对应member variable,Text1也没有定义对应变量
那Text1是否就等于是变相成为此class的member variable?
然后当你不希望Text1只能get或是只能set时
会发现你只写get,但是你无法给他初始值,所以没意义
如果只写set时,会发现没有任何人可以存取他
(这部分不确定,有错请指认)
所以有点疑惑当简写到这种程度的时候是否有其意义?
Q2:
今天看程式书时看到他在制作取得appSetting的method时是这样写
==========================================================
public static String KeyName() {
get {
return System.Web.Configuration.
WebConfigurationManager.AppSettings["KeyName"];
}
}
===========================================================
当下看到很疑惑的是这只是取得AppSettings的设定
是否有必要特地采用Property的写法?
感觉就只是变相取一个比较短名称的method而已
那用传统的写法是否会比较适当?
===========================================================
public static String getKeyName() {
return System.Web.Configuration.
WebConfigurationManager.AppSettings["KeyName"];
}
===========================================================
会来提问主要是最近看得书和程式都是这类简化写法
总觉得有点走味了,但是由于刚开始学
所以也不知是否真的因某些考量,所以这样写比较好
还是单纯觉得写法比较简短才这样写
请前辈们指导一下 Q.Q