C#类学习笔记之C#类的属性
本文导语: C#类的属性定义 属性:get { //读属性代码 } set { //写属性代码 } public class Person { private string name; public string Name { get{return name;} set{ name=value;} } } 属性可以忽略get或set访问器,但是不能两个都忽略。 set访问器...
C#类的属性定义
属性:get { //读属性代码 } set { //写属性代码 }
{
private string name;
public string Name
{
get{return name;}
set{ name=value;}
}
}
属性可以忽略get或set访问器,但是不能两个都忽略。
set访问器包含一个隐藏的参数value,该参数包含从客户代码传送过来的值。
公共属性及其底层类型最好使用相同的名称,因为它们之间的联系将很清晰。
字段使用camelCase(xxXxx),如dateOfBirth,而属性使用PacalCase(XxXxx),如DateOfBirth.一些开发人员喜欢在字段的开头使用下划线,如_Name,属性也应使用名词来命名.
c#通过属性特性读取和写入字段,而不直接读取和写入,以此来提供对类中字段的保护.
属性按可以访问的类型分为三种不同的类型:
一,读/写属性
读/写属性是一个具有get()和set()访问器的属性.
语法: [访问修饰符] 数据类型 属性
get{ };
set{ };
}
二,只读属性
仅具有get()访问器属性称为只读属性.
语法: [访问修饰符] 数据类型 属性名
get{ };
}
三,只写属性
仅具有set()访问器属性称为只写属性,不推荐使用只写属性.
语法: [访问修饰符] 数据类型 属性名
set{ };
}
示例:
using System;
namespace Example1
{
class Student
{
#region/***属性***/
///
/// 姓名
///
private string name;
public string Name
{
get
{
return name;
}
set
{
if(value.length 24)
throw new ArgumentException("value");
hour = value;
}
类的属性称为智能字段,类的索引器称为智能数组。由于类本身作数组使用,所以用
this作索引器的名称,索引器有索引参数值。
例如:
using System.Collections;
class MyListBox
{
protected ArrayList data = new ArrayList();
public object this[int idx] //this作索引器名称,idx是索引参数
{
get
{
if (idx > -1 && idx < data.Count)
{
return data[idx];
}
else
{
return null;
}
}
set
{
if (idx > -1 && idx < data.Count)
{
data[idx] = value;
}
else if (idx = data.Count)
{
data.Add(value);
}
else
{
//抛出一个异常
}
}
}
}
}
尽可能编写出运行效率更高,更健壮,更容易维护的C#代码。