我写一段C#代码,从外部引入了一个类XXX,准备用XXX x= new XXX()实例化,提示是此类没有提供构造函数.
  看一下帮助,还真是的.
     我对C#刚开始,可能有些地方了解不够,请问可能是什么原因?谢谢

解决方案 »

  1.   

    应该是你写了,但是写的不对。
    比如没声明public之类的
      

  2.   

    此时您可以自己添加一个属性或者方法来获得它的实例:
    如:class Test
    {
       private static Test t=new Test();   public Test GetTestObj
       {
          get
          {
             return t;
          }
       }
    }
      

  3.   

    上面的属性也应该为static
    class Test 

      private static Test t=new Test();   public static Test GetTestObj 
      { 
          get 
          { 
            return t; 
          } 
      } 
    }
      

  4.   

    没有构造函数说明构造函数声明成了privte或者internal或者protected。
      

  5.   

    由于你可能是初学者,我给你说一下原理。
    比如://==============类A======================
    public class A
    {
    internal A(int num)
    {
    //构造函数
    }
    }//==============类B======================
    public class B
    {
    public B()
    {
    }
    public A MakeA(int num)
    {
    return new A(num);
    }}//======================================
    调用举例B bb=new B();
    A aa=B.MakeA(123);
    A aaa=new A() //错误!
      

  6.   

    在我上面的代码中,你关键是要理解internal的意思。
      

  7.   

    说实话,你的例子我看不懂,如果Test类是别人的我怎么解决?
      

  8.   

    刚看了一下类的帮助,就是没有任何类型的构造函数(包括private,internal).
      

  9.   


    我的例子你没看懂吗?
    我只是想说明为什么会出现你提到的那个问题。如果类是别人写的,那么你就得阅读别人的文档,看看怎么去构造一个新实例。按我的例子来说,A类的构造函数是internal性质的,即只有在同一个assembly里的类才能访问,故通过 B.MakeA 来构造A。
    你可以看一个更具体的例子,比如类的ExecuteReader()。查阅MSDN:
    http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader(VS.80).aspx
      

  10.   

    不好意思,我是说看不懂new_stone写的代码.
    但是你说的例字,那个xxx类应该说明是有构造函数的,他的帮助上也说没有.
      

  11.   

    XXX类不能实例化可能是用了
    private XXX(){}这样的化XXX应该提供了一个静态函数来创建该类的实例。查查看有没有这种函数。或者是有没有XXXFactory之类的辅助类。
      

  12.   


    如果是你说的情况,应该帮助中说明一下,而且也没有XXXFactory辅助函数.
      

  13.   

    有些类不提供构造函数,并把默认的构造函数 private 了,所以你就不能实例化它。
     
    为什么要这么做呢?
     
    因为有些类实在没有必要实例化它,比如它仅包含静态成员,我们调用时只需要利用类型来调用,而不是实例来调用,所以不需要构造函数。
      

  14.   


    实际上,我需要这个类的成员,他的成员确实是只读的,只是我不清楚怎样获取他的实例.
    如果他的构造函数是private,我也应该可以看到吧,可是我看不到,帮助中也没有说明.
    我用new实例的话,提示没有定义构造函数.
    用XXX x;
    x.aa就提示没有定义的x.
      

  15.   

    应该是构造函数被private了,查看下该类有没有静态的方法(不需要实例化该类),如XXX.getInstance(),获取该类实例的,有可能该类为单例类
      

  16.   


    没有,
    实际上,我是从一个开发包开始进行开发的
    这个开发包比方说:
    ControlBase,帮助上说,这个ControlBase在某些时候会截获对他的调用,截获的结果
    就放在XXX类的实例中,我从ControlBase继承得到我的类,可是我找不到在那里得到XXX的实例,
    反正XXX类本身没有构造函数,我找了一下ControlBase的方法,也没有返回XXX的,属性也没有.
      

  17.   

    是谁开发的ControlBase,你去问问他
      

  18.   

    微软的,问不到???我在msdn里怎么查不到ControlBase
      

  19.   

    class xxx
    {
        public xxx()
        {
            ....
        }
    }
    把构造器加起看哈行不安
      

  20.   

    是微软的pos for .net sdk .