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

[求助]如何实现类的不同构造函数拥有不同的方法.
我的问题是:
比如:
public   class   a
{
    private   int   _Id;
   
    //构造函数
    public   a()
    {
 
    }

    public   a(int   paramInt)
    {
        this._Id=paramInt
    }
   
    public   int   UpDate()
    {
        //其他代码
        /*我的目的:我想在使用这个类的时候,a=new   a();这个时候只能使用Update()这个方法,而下面这个Delete()方法不能使用.(最好是在a点的时候智能提示不显示Delete()这个方法.*/
    }
    public   int   Delete()
    {
  //其他代码
        /*我的目的:我想在使用这个类的时候,a=new   a(1);这个时候只能使用Delete()
这个方法,而上面那个UpDate()方法不能使用.(最好是在a点的时候智能提示不显示UpDate()这个方法.*/

    }
}


简单的说:
就是:
如果使用a=new   a()实例化的时候,只能使用UpDate()方法(最好是在a点的时候智能提示不显示Delete()这个方法).

如果使用a=new a(1)实例化的时候,只能使用Delete()方法(最好是在a点的时候智能提示不显示UpDate()这个方法).

不知道可以实现不呢?

请各位大哥大姐帮帮忙,3Q!

------解决方案--------------------
构造函数重载
通过设置不同参数对构造函数重载
比如public a()
{}
也可以
public a(string str1)
{}
还可以public a(string str1, int i)
{}
etc..
------解决方案--------------------
-_-#
------解决方案--------------------
先想想,貌似不行的
------解决方案--------------------
先帮你顶一下,最好给我点分!呵呵!
------解决方案--------------------
曲线救国


public class A
{
private int _Id;
private A _A = null;

public A()
{
_A = new A1();
}

public A(int paramInt)
{
this._Id = paramInt;
_A = new A2(paramInt);
}

public int UpDate()
{
if (_A is A2)
{
throw new Exception( "Update方法不能用 ");
}
}

public int Delete()
{
if (_A is A1)
{
throw new Exception( "Delete方法不能用 ");
}
}
}

public class A1 : A
{
}

public class A2 : A
{
}

------解决方案--------------------
我觉得不行
------解决方案--------------------
建议你写两个类,如果是自己使用的话应该明白其中的意思,所以不用你说的条件
------解决方案--------------------
为什么不派生出两个类;
一个构造函数继承A(),实现Update()方法;
另一个构造函数继承A(int a),实现Delete()方法;
------解决方案--------------------
建不同的类,属于不同的类中 ^-^
^-^
^-^
------解决方案--------------------
有点工厂和单件的味道。
------解决方案--------------------
你可以用接口来完成,注意要避开从constructor来控制,大致的思路如下:
public interface IUpdate
{
int Update();
}

public interface IDelete
{
int Delete();
}

public class a:IUpdate, IDelete
{
private a(){}
private a( int paramInt ){
...