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

时间:2023-02-06 14:27:03
  个人的一点胡思乱想,希望能被有识之士看到。若能翻译成英文,提交给微软,那就更好玩了。

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

C#语言中的属性语法还可以改进string  name;
C#语言中的属性语法还可以改进
public   string  Name
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
{
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
get return name; }
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
set { name = value; }
C#语言中的属性语法还可以改进}

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

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

C#语言中的属性语法还可以改进public   string  Name
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
{
C#语言中的属性语法还可以改进    
string name;
C#语言中的属性语法还可以改进
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
get return name; }
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
set { name = value; }
C#语言中的属性语法还可以改进}

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

C#语言中的属性语法还可以改进public   string  Name
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
{
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
get return store; }
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
set sotre = value; }
C#语言中的属性语法还可以改进}

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

C#语言中的属性语法还可以改进public  sring Name
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
{
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
get {}  // 空访问器,由编译器生成诸如return store;这样的代码
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
    set {}  // 空访问器,由编译器生成诸如store = value;这样的代码
C#语言中的属性语法还可以改进
}

C#语言中的属性语法还可以改进
C#语言中的属性语法还可以改进
public   float  P
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进
{
C#语言中的属性语法还可以改进C#语言中的属性语法还可以改进    
get return a / b; }  // 非空访问器,编译器不生成代码
C#语言中的属性语法还可以改进
}


  怎么样?是不是有那么一点意思?