C#类学习笔记之C#类的属性

发布时间:2020-07-12编辑:脚本学堂
本文介绍下,C#类的属性的相关内容,有需要的朋友,可以参考下。很多新手朋友,对C#类的属性掌握的不是很好,在使用时难免有一些问题存在,本文为大家详细介绍C#类属性的相关知识,理论加实例,希望对大家有所帮助。

尽可能的使用属性(property),而不是数据成员(field)。
 

复制代码 代码示例:

private   int   property1  
public     int   Property1  
    {    
        get  
        {  
          return   property1   ;  
          }  
        set  
          {  
            if   (value>1)     //这里校验  
                property1=   value   ;  
                else    
                property1=1;  
          }
 }


 //实例属性,可读可写
  public int StrCount
  {
   get
   {
    return m_strCount;
   }
   set
   {
    if (value>m_strCount)
    {
     strArray = new string[value];
     for (int i=0;i<value;i++)
     {
      strArray[i] = String.Format("String No.{0}",i);
     }
     m_strCount = value;
    }
   }
  }
  private static string m_strName = "MyClass";
  //一个静态属性,只读
  public static string ClassName
  {
   get
   {
    return m_strName;
   }
  }
class B
{
private A _a;
public A item
{
  get
  {
    if(_a=null)
      _a=new A();
    return _a;
  }
  set{_a=value;}
}
}

对C#类的属性作个简单的总结:
1,属性是C#从VB提取的,而不是C++或者JAVA。
2,在语法上更像是调用了一个字段,但实际上是调用了属性访问器。包括 get访问器和set访问器。
3,set访问器不指定参数,但编译器会假定一个参数value。
4,VB6程序员注意:C#不区分Set和Let,总是用set。

5,属性的只读与只写
在属性中省略set访问器,就可以创建只读属性
在属性中省略get访问器,就可以创建只写属性

说明:这不是一个好的编程方式,这样会使客户机代码的作者迷惑,如果要这么做,最好是一个方法进行代替。

6,属性的访问修饰符
C#允许给属性的get和set访问器设置不同的修饰符(private,protected等) 但不能同时为两个设置,必须有一个具备属性的访问级别,否则就会产生一个编译错误。
例如:
 

private string name;

错误的写法:
 

复制代码 代码示例:
public string Name  
{
   private get
   {
      return name;
   }
   private set
   {
     name = value;
   }
}

正确的写法:
 

复制代码 代码示例:
public string Name
{
    private get
    {
      return _name;
    }
    set
   {
     _name = value;
   }
}

7,属性定义的自动实现
用自动实现的的属性,不需要声明关联的变量
例如,6中定义的private string name; name变量,编译器会自动创建它。
 

public string Name { get; set; }

注意:
 

a,不能尝试设置只读属性
public string Name { get;  }会出错,

b,可以使用访问修饰符,规则同上
public string Name { private get; set; }

介绍完了,感觉如何呢?对C#类的属性,是不是感觉已经掌握的差不多了。
脚本学堂,祝大家学习进步。