困扰很久的问题,现在想彻底了解&
在程序设计里面,经常使用到变量,比如
String ShangPinID;
SahngPinID=1
这是最普通的应用方法了,定义变量之后直接就赋值,很简单很直接,我从来都是使用这样的操作方法:
但是,在网上经常遇到这样的问题:
public class Stat_Class
{
private String ShangPinID; //商品ID
private String Sp_Name; //商品名称
private decimal Sp_Price; //商品价格
private int Sp_Quan; //商品数量
public string ItemID
{
get { return ShangPinID; }
//set { ShangPinID = value; }
}
public string ShangpinName
{
get { return Sp_Name; }
//set { Sp_Name = value; }
}
//构造方法,初始化商品的各个属性
public Stat_Class(string ItemID, string ShangpinName, decimal Price, int Quantity)
{
ShangPinID = ItemID;
Sp_Name = ShangpinName;
Sp_Price = Price;
Sp_Quan = Quantity;
}
即使用构造函数通过GET 或SET来获得和取得变量的值,不知道为什么要这样做,难道这样做比直接赋值使用的办法更好吗,本人一直弄不明白,高人能否说明白,
[解决办法]
其实就是为了使用方便,定义这样的构造函数之后就可以使用:
Stat_Class cls = new Stat_Class(ItemID, ShangpinName, Price, Quantity);
[解决办法]
属性:C#封装方法的体现,隐藏了内部的变量,只给外部提供接口,比如在你的代码中:
public string ItemID
{
get { return ShangPinID; }
//set { ShangPinID = value; }
}
你的ItemID是只读的,因为它只有get操作符,不能写(set被你注释掉了),而如果你直接向外部公开ShangPinID变量就没这么容易实现只读的目的;
更重要的是,你可以在get/set时加入你自定义的逻辑在里面,比如你想定义一个属性来存放 ShangPinID + "& " + Sp_Name,就可以这样写:
public string ItemID
{
get { return ShangPinID + "& " + Sp_Name; }
}
这样引用的只引用ItemID就行了,不用写更多的代码;
自己的一些体会,第一次回贴,如果有用请给点分呵呵
[解决办法]
五个裤衩怎么来的……
还有那信誉值……
------解决方案--------------------
为了更好的封装
同时
是为了灵活和有条件的控制对类内私有成员的访问
[解决办法]
那个没返回类型,是构造方法,new的时候调用
Stat_Class sc = new Stat_Class(ItemID,ShangpinName,Price,Quantity)
[解决办法]
面象对象三大特性,封装、多态、继承
在控件开发,和封装一些类的时候用属性是很有必要的