高度关注我,为您撷取C#控制技术同时实现
类核心成员(竭尽全力补足)
为何须要特性?
在C#中他们能十分民主自由的、不无管制的出访私有表头,但他们可能将期望:
管制根本难以给表头突显某一覆盖范围的值或者明确要求表头根本难以读或根本难以写或者在发生改变表头并能发生改变第一类的其它许多状况那些只靠表头是难以努力做到的,只好便有了特性
特性中包涵三个块:set和get块,set块负责管理特性的载入组织工作,get块负责管理特性的加载组织工作。
在三个块中都能做许多其它操作方式,如在set中校正赋的值与否符合规定并与否展开表达式。
Set和get块中的特性要有两个,即使既难以读又难以写的特性是没象征意义的。
上面举个范例:
特性能确保安全可靠,当无此光茎中采用时,采用特性名能躲避用表头的英文名字。/// <summary>
/// 产品价格
/// </summary>
private decimal _price;
/// <summary>
/// 产品价格,根本难以写,不容读
/// </summary>
public decimal Price
{
get { return _price; }
set { _price = value; }//可写
}
特性的set和get块能管制表头的许多功能,以达到某种目的。/// <summary>
/// 名称
/// </summary>
private string _name;
/// <summary>
/// 商品名称
/// </summary>
public string Name
{
get { return _name; }//可读
set
{
if (value == “”)
{
_name = “是不是很意外”;
}
else
{
_name = value;
}
}//可写
}
构造函数的作用:
当你实例两个第一类的时候,肯定会先去执行构造函数,其实就是初始化该第一类内部定义的特性。
///<summary>
/// 实例化两个具有全部参数的第一类
///</summary>
///<param name=”n“></param>
///<param name=”p“></param>
///<param name=”c“></param>
public TestGoods(string n,decimal p,string c)
{
_name = n;
_price = p;
_color = c;
}
运行结果:
主窗体代码示例:
publicpartialclassForm8 : Form
{
publicForm8()
{
InitializeComponent();
}
privatevoid bt_add_Click(object sender, EventArgs e)
{
TestGoods testGoods = new TestGoods(tb_name.Text, decimal.Parse(tb_price.Text), tb_color.Text);
//testGoods.Name = tb_name.Text;
//testGoods.Price = decimal.Parse(tb_price.Text);
//testGoods.Color = tb_color.Text;//错误即使他时只读
testGoods.Name =“”;
lbb_name.Text = testGoods.Name;
lbb_price.Text = testGoods.Price.ToString();
lbb_color.Text = testGoods.Color;
}
}
类代码:
publicclassTestGoods
{
///<summary>
/// 名称
///</summary>
privatestring _name;
///<summary>
/// 产品价格
///</summary>
privatedecimal _price;
///<summary>
/// 颜色
///</summary>
privatestring _color;
///<summary>
/// 实例化两个具有全部参数的第一类
///</summary>
///<param name=”n“></param>
///<param name=”p“></param>
///<param name=”c“></param>
public TestGoods(string n,decimal p,string c)
{
_name = n;
_price = p;
_color = c;
}
///<summary>
/// 商品名称
///</summary>
publicstring Name
{
get { return _name; }//可读
set
{
if (value == “”)
{
_name = “是不是很意外”;
}
else
{
_name = value;
}
}//可写
}
///<summary>
/// 产品价格
///</summary>
publicdecimal Price
{
get { return _price; }
set{ _price = value; }//可写
}
publicstring Color
{
get { return _color; }//可读
set { _color = value; }
}
///<summary>
/// 析构函数
///</summary>
~TestGoods()
{
//清理非托管代码资源
}
}