关于属性

public class a

{

  
public int age;

}

var a
= new a();

age
= 5;

你就直接赋值了,当然作者十分反对这样做, 她违反了OO思想的一个原则就是 数据封装

比如一个不熟悉代码的程序员.. age
= 2000;

这个时候属性就出场了。 各种限制.

class aaa

{

private int _a = 5;

public int a { get { return a; } } //丫只读

   
private int _b;

public int b { set { _b = value; } } //这里就可以对value 做判断 throw一些错误

}

换句话说 属性能让类在你的控制之中..

关于性能。 这是一个坑。。

关于属性的一些说明

1 他丫永远是最新的值

比如
public string t { get { return DateTime.Now.ToString(); } }

而不会像字段一样。 赋值一次就ok了不管什么时候调用都是最初的值

2 不能out ref. 当然.. 你直接对原始字段out ref 不就完了。。 当然我指的是内部。

属性应该是没有性能损失了。 他编译时会替换代码。。



关于初始化

var o = new aaa { a = { "a", "b" } };

class aaa
{
public List<string> a = new List<string>();
}

这种初始化方式不错,可读性不错,也比较简便。

var o
= new { name="aaa" }; //匿名实例化

当然她还是语法糖,编译器做了很多事儿罢了..

当然可不可不用。。

索引器

class aaa
{
public string this[string a]
{
get { return a; }
}
}

var o
= new aaa();

o[
"aaa"];

其实就是一个简化的方法



class aaa
{

  
public string aaaaa(string a) { return a; }
}

当然不用取名字也是好事儿一件。。

Set同理就不赘述了。

= = ~ 还是语法糖.

会生成方法
set 多一个value的参数罢了

1。只能用于实例

2. 可以重载

3. 可以修改生成的名字。 不过你改他干什么呢

4.在你同时拥有 get set 的时候可以对他设置可访问性,private 之类

其实语法糖的东西。 在不清楚编译器做了什么之前,最好不要用, 天知道他干什么了。。

转载于:https://www.cnblogs.com/CallMeTommy/archive/2011/08/20/2145060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值