读书人

困扰很久的有关问题现在想彻底了解&

发布时间: 2012-03-15 11:50:39 作者: rapoo

困扰很久的问题,现在想彻底了解&
在程序设计里面,经常使用到变量,比如
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)
[解决办法]
面象对象三大特性,封装、多态、继承
在控件开发,和封装一些类的时候用属性是很有必要的

读书人网 >asp.net

热点推荐