C#语言中的属性语法还可以改进

  个人的一点胡思乱想,希望能被有识之士看到。若能翻译成英文,提交给微软,那就更好玩了。

  C#语言中的属性,把数据(域)和行为(方法)很好地结合到了一起,使得类的编写者可以像编写方法那样,对传入参数进行验证;而类的使用者,则可以向访问域那样访问属性。但更多的时候,我们看到的是这样的代码:

string name;
public string Name
{
    
get return name; }
    
set { name = value; }
}


  因此我想,如果能够为这种情况而进行一些语法上的优化器不是能更加“优雅”?比如,允许声明可以由get/set访问其所共享的变量:

public string Name
{
    
string name;

    
get return name; }
    
set { name = value; }
}

  甚至,连变量都可以不要,而是提供关键字store,由编译器定义一个匿名的变量来存放属性值:

public string Name
{
    
get return store; }
    
set sotre = value; }
}

  再甚至,如果属性的代码里没有任何验证或计算代码,只是返回store中的值,或者把值放入store中,还可以使用空访问器:

public sring Name
{
    
get {}  // 空访问器,由编译器生成诸如return store;这样的代码
    set {}  // 空访问器,由编译器生成诸如store = value;这样的代码
}


public float P
{
    
get return a / b; }  // 非空访问器,编译器不生成代码
}


  怎么样?是不是有那么一点意思?
posted @ 2006-07-31 10:48 Anders Liu 阅读(1779) 评论(11) 编辑 收藏

 回复 引用   
#1楼 2006-07-31 11:59 FA[未注册用户]
如果你能搞出编译器,你怎么改都行!!!!
 回复 引用   
#2楼 2006-08-04 11:20 lonfone[未注册用户]
那直接用 PUBLIC 变量得了,何必用属性访问器.
 回复 引用 查看   
#3楼[楼主] 2006-08-04 18:19 Anders Liu (lover_P)      
@FA
我还真学过一阵编译原理,不过那玩意需要极大的耐性和大量的理论训练,我都没有,所以以失败告终。

 回复 引用 查看   
#4楼[楼主] 2006-08-04 18:20 Anders Liu (lover_P)      
@lonfone
当然不能用public变量了~
者要考虑扩展性,可能一开始需要空访问器,但后期可能会向其中添加代码。

 回复 引用   
#5楼 2006-08-29 11:02 老赵[未注册用户]
你的意思是不是在他的外面再包上一层外衣,使用起来更方便啊!!!!
 回复 引用   
#6楼 2007-11-28 18:33 menxin[未注册用户]
空访问器已经实现了
{get;set;}

 回复 引用 查看   
#7楼 2008-08-15 02:19 JimLiu      
@menxin
实际上是编译器生成了m_xxx字段吧?
Property是个好东西,看着舒服,比getXXX()/setXXX()来的舒服

 回复 引用 查看   
#8楼 2008-08-15 02:19 JimLiu      
public string Name
{
string name;

get { return name; }
set { name = value; }
}
这个挺好玩,也很不错

 回复 引用 查看   
#9楼 2011-04-21 10:59 风云      
LZ很有前瞻性呀,很是佩服!
 回复 引用 查看   
#10楼[楼主] 2011-04-21 15:01 Anders Liu      
@风云
多谢你的回复,差点把这篇文章忘了……

 回复 引用 查看   
#11楼 2011-04-21 15:04 风云      
我也是经常忘记,呵呵...
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 463809 upc4i1KBP2g=