Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有私有可访问性的默认构造函数_C#_Asp.net - Fatal编程技术网

C# 具有私有可访问性的默认构造函数

C# 具有私有可访问性的默认构造函数,c#,asp.net,C#,Asp.net,根据Microsoft,类始终包含默认构造函数,该构造函数是私有的,那么如何才能在另一个类中启动对象。您错过了最重要的部分: 私有构造函数是一种特殊的实例构造函数

根据Microsoft,类始终包含默认构造函数,该构造函数是私有的,那么如何才能在另一个类中启动对象。

您错过了最重要的部分:

私有构造函数是一种特殊的实例构造函数<是的 通常用于仅包含静态成员的类。如果类 有一个或多个私有构造函数而没有公共构造函数,其他 类(嵌套类除外)无法创建此类的实例

他们在文章中展示的常见用例讨论了仅通过所述类使用静态成员,如下所示:

class NLog
{
    // Private Constructor: 
    private NLog() { }

    public static double Foo = 3.284;
}
类没有默认的
private
构造函数:

如果类是抽象的,那么 默认构造函数受保护。否则,声明 默认构造函数的可访问性是公共的。因此,默认 构造函数的形式总是


你只是误读了那一页。对于没有定义构造函数的类:

class C {}
存在一个默认的公共构造函数,
C()

如果显式声明构造函数,则默认构造函数将不存在。如果您声明构造函数如下:

class C
{
    C()
}
然后它将是私有的,因为所有类成员都是私有的,除非使用显式的
public
internal
protected
访问修饰符


如果您声明了一个空构造函数(不管它是私有的还是非私有的,这都无关紧要),您将阻止生成默认构造函数(它总是公共的)

你在哪里读到的?构造函数| private | All/?你读过关于“只包含静态成员的类”的那部分吗?请注意,如果你不在构造函数中使用访问修饰符,默认情况下它仍然是私有的。但是,private修饰符通常被显式地用来说明类不能被实例化。我不明白为什么如果类的所有成员都是静态的,那么该类就不会被标记为静态的。。。但事实上,答案是:)@Kritner它肯定可以标记为
静态
,尽管它不一定要标记为静态。