public class Person
{
private string _name = "No one";
public Person(string name)
{
_name = name;
}
public string Name
{
get { return _name;}
}
};
Person p = new Person ("Arya");
System.Console.WriteLine (p.Name);
public string Name
{
get { return _name;}
set { _name = value;}
}
value是set访问器的隐式参数,此参数的类型是属性的类型(string)。p.Name = "Erya";
public string this[string key]
{
get { if (key == "Name")
return _name;
return null;}
set { if (key == "Name")
_name = value;
return;}
}
p ["Name"] = "Anonymous";
System.Console.WriteLine (p ["Name"]);
属性 | 索引器 |
---|---|
允许像调用公共数据成员一样调用方法。 | 允许对一个对象本身使用数组表示法来访问该对象内部集合中的元素。 |
可通过简单的名称进行访问。 | 可通过索引器进行访问。 |
可以为静态成员或实例成员。 | 必须为实例成员。 |
属性的 get 访问器没有参数。 | 索引器的 get 访问器具有与索引器相同的形参表。 |
属性的 set 访问器包含隐式 value 参数。 | 除了value参数外,索引器的 set 访问器还具有与索引器相同的形参表。 |
支持对自动实现的属性使用短语法。 | 不支持短语法。 |
public int Age { get;set;}
而这种写法妙用就在于可以写成这样:
public int Age { get;private set;}
即对外只读,对内可写。
protected int RealAge{ private get; set;}
public class Coder : Person
{
public new int Age {get{ return 16;}}
public new string this[string key]
{
get {if (key == "Name")
return "I don't know.";
return null;}
}
}
Coder c = new Coder();
System.Console.WriteLine (c.Age);
System.Console.WriteLine (c["Name"]);
会显示10和I don't know.
System.Console.WriteLine (((Person)c).Age);
System.Console.WriteLine (((Person)c)["Name"]);
显示0和No one。
public virtual bool Male {
get;
set;
}
public virtual bool this[bool noSense]
{
get { return noSense;}
}
public override bool Male
{
get { return true;}
set { }
}
public override bool this[bool noSense]
{
get { return !noSense;}
}
static public string Planet
{
get { return "The Earth";}
}
(如果哪天我们人类开启星际殖民,就要修改get并添加set了。)
public int this[int a, int b]
{
get { return a + b;}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务