静态,内部和公共构造函数之间有什么区别?为什么我们需要一起创建所有这些?
static xyz()
{
}
public xyz()
{
}
internal xyz()
{
}
答案 0 :(得分:13)
第一次实例化该类型的对象或调用静态方法时,将调用static
构造函数。并且只会运行一次
所有其他类型
都可以访问public
构造函数
只有同一程序集中的类型才能访问internal
构造函数
除了这三个之外,还有protected
只能从封闭类型派生的类型访问
和protected internal
只能访问同一个程序集中的类型或者从封闭类型派生的类型
和private
只能从类型本身和任何嵌套类型
答案 1 :(得分:7)
public
和internal
之间的区别在于internal
构造函数只能在同一个程序集中调用,而public
构造函数可以从其他程序集中调用同样。
static
是一个只在第一次引用类时才被调用的构造函数。静态成员不属于该类的实例,而是属于“类本身”。有关static
。
答案 2 :(得分:3)
new
您的代码实际上没有编译,因为内部和公共代码是具有不同修饰符的相同构造函数,您无法做到。您需要选择内部或公共(或私人)。
答案 3 :(得分:2)
第一次使用类型时会调用静态构造函数。无论是在静态上下文中还是通过创建实例。
创建新实例时会调用所有其他构造函数。修饰符只是确定哪些代码可以创建实例。
如果构造函数是私有的,则只有类本身和嵌套类型可以创建实例(可能在静态工厂方法中)。这类似于公共/私人/内部方法。
答案 4 :(得分:0)
您不需要创建所有类型的构造函数。访问修饰符提供与任何其他访问修饰符相同的功能 - 以确定如何访问构造函数。
internal
条件的项目调用,该条件“只能在同一程序集中的文件中访问”。protected
和private
构造函数按预期运行 - 构造函数可供符合访问修饰符条件的项访问。