日期:2014-05-19  浏览次数:20896 次

关于类的属性赋值问题
想问一下,为一个类的属性赋值,是不是只能实例化这个类后再赋值,我能否在类中定义一个函数,改变这个属性的值?
例如:
类定义:
Class   Test
{
        private   List <myDefiniteType>   _myTypeP;
        public   List <myDefiniteTyep>   MyTypeP
        {
              set{   _myTypeP   =   value;   }
              get{   return   _myTypeP;   }
        }
         
        public   Test();
}
我能否在Test类中再定义一个函数为_myTypeP赋值?
changeProp()
{
      _myTypeP   =   new   List <myDefiniteType> ();
}

------解决方案--------------------
如果不是在构造函数里给myTypeP值,可能这个myTypeP在类被实例化后不是马上有值,而是要明确的调用方法后才能有值,所以最好是在构造函数里参它进行初始化,

当然就像你的代码中那个函数是完全可以添加到类里的,且可以做为Public公开到类外面供调用以初始化这个myTypeP变量.比如:

Class Test
{
private List <myDefiniteType> _myTypeP;
public List <myDefiniteTyep> MyTypeP
{
set{ _myTypeP = value; }
get{ return _myTypeP; }
}

public void changeProp()
{
_myTypeP = new List <myDefiniteType> ();
}
}

------解决方案--------------------
当然可以...

go to have a try..
------解决方案--------------------
我能否在Test类中再定义一个函数为_myTypeP赋值?
-----------------
可以,但通常没什么必要

另外有两个错误:

private List <myDefiniteType> _myTypeP = new List <myDefiniteType> (); //要赋初值,不然编译通不过
public List <myDefiniteTyep> MyTypeP
{
get{ return _myTypeP; } //泛型集合属性不需要set访问器
}
------解决方案--------------------
可以.