您的位置:程序门 -> .net技术 -> c#



c# 一个关于类的简单问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c# 一个关于类的简单问题[已结贴,结贴人:luodanyu]
发表于:2007-01-05 15:24:33 楼主
class   c
{
        private   c()
        {
        }
}

里面这个private   c有是什么,有什么作用?
发表于:2007-01-05 15:27:441楼 得分:0
类的构造函数,可以在实例类的时候初始数据
发表于:2007-01-05 15:30:372楼 得分:0
怎么可以private?不能被访问怎么构造?
发表于:2007-01-05 15:34:363楼 得分:0
当一个类的成员不需要或者不宜被实例化的时候,定义私有的构造函数就可以防止被错误地实例化
发表于:2007-01-05 15:37:304楼 得分:20
私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。例如:

class   nlog

{

        //   private   constructor:

        private   nlog()   {   }         public   static   double   e   =   system.math.e;     //2.71828...

}

声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用   private   修饰符来清楚地表明该类不能被实例化。

当没有实例字段或实例方法(如   math   类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。如果类中的所有方法都是静态的,可考虑使整个类成为静态的。有关更多信息,请参见静态类和静态类成员。

示例

下面是使用私有构造函数的类的示例。

public   class   counter

{

        private   counter()   {   }

        public   static   int   currentcount;

        public   static   int   incrementcount()

        {

                return   ++currentcount;

        }

}

class   testcounter

{

        static   void   main()

        {

                //   if   you   uncomment   the   following   statement,   it   will   generate

                //   an   error   because   the   constructor   is   inaccessible:

                //   counter   acounter   =   new   counter();       //   error                 counter.currentcount   =   100;

                counter.incrementcount();

                system.console.writeline( "new   count:   {0} ",   counter.currentcount);

        }

}

输出

new   count:   101

注意,如果您取消注释该示例中的以下语句,它将生成一个错误,因为该构造函数受其保护级别的限制而不可访问:

//   counter   acounter   =   new   counter();       //   error
发表于:2007-01-05 15:40:095楼 得分:0
简单的说就是不想让使用者初始化这个类。
发表于:2007-01-05 15:44:366楼 得分:0
学习了
发表于:2007-01-05 15:44:387楼 得分:0
感谢各位,特别感谢jiatong1981。
此问题与基本明白!^-^



快速检索

最新资讯