codecamp

C# 属性

C#属性

属性从外部看起来像字段,但在内部它们包含逻辑。

一个属性被声明为一个字段,但是添加了一个get / set块。

以下是如何实现CurrentPrice作为属性:


public class Product {
    decimal currentPrice;       // The private "backing" field
   
    public decimal CurrentPrice // The public property 
    { 
        get { 
           return currentPrice; 
        } 
        set { 
           currentPrice = value; 
        } 
    } 
} 

get set 是属性访问器。

读取属性时,get访问器运行。它必须返回属性类型的值。

在赋值属性时,集合访问器运行。

它有一个属性类型的名为value的隐式参数,通常分配给一个私有字段。

我们可以编写属性的代码来控制获取和设置其值。

属性允许以下修饰符:

项目修饰符
修饰符...static
访问修饰符public internal private protected
继承修饰符new virtual abstract override sealed
非托管代码修饰符unsafe extern

只读和计算属性

如果属性仅指定get访问器,那么该属性是只读的。

如果一个属性只指定一个集合访问器,则该属性是只写的。

属性通常具有专用的备份字段以存储基础数据。

然而,也可以从其他数据计算属性。例如:


decimal currentPrice, sharesOwned; 
public decimal Worth {
   get { return currentPrice * sharesOwned; } 
} 

自动属性

自动属性声明指示编译器提供实现。

我们可以重新声明本节中的第一个示例如下:


public class Product 
{
    public decimal CurrentPrice { get; set; } 

} 

编译器自动生成无法引用的编译器生成的名称的私有备用字段。

如果要将属性以只读方式公开给其他类型,则可以将集合访问器标记为private。

获取和设置辅助功能

get和set访问器可以有不同的访问级别。


public class Product {
    private decimal x;
    public decimal X{
      get { 
          return x; 
      } 
      private set { 
          x = Math.Round (value, 2); 
      } 
    } 
} 
C# 引用
C# 索引器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }