C#控制台程序关于静态字段实例化和使用的问题
这里是新手。我最近做了一个测试,问一些C代码的输出是什么。我没有确切的代码,但我已尝试从下面的内存中重新创建它。由于某种原因,这段代码没有编译(因为我对这里发生的事情有疑问,所以这段代码并不是很重要)。我最想记住的部分是创建所有类字段的行 以下是我的问题:C#控制台程序关于静态字段实例化和使用的问题,c#,instantiation,output,C#,Instantiation,Output,这里是新手。我最近做了一个测试,问一些C代码的输出是什么。我没有确切的代码,但我已尝试从下面的内存中重新创建它。由于某种原因,这段代码没有编译(因为我对这里发生的事情有疑问,所以这段代码并不是很重要)。我最想记住的部分是创建所有类字段的行 以下是我的问题: 使用“new class1();”创建一个类的新实例而不将它赋给变量,这是实例化它的有效方法吗 每次实例化类时,静态字段是如何处理的 甚至可以通过调用构造函数来创建类字段吗 using System; using System.Collect
using System;
using System.Collections.Generic;
namespace CustomFunctionTest
{
class Program
{
static void Main(string[] args)
{
new class1();
new class1("E");
}
}
public class class1
{
public static class1 test1 = new class1("A");
private class1 b = new class1("B");
public static class1 c = new class1("C");
public class1()
{
Console.WriteLine("D");
}
public class1(string str)
{
Console.WriteLine(str);
}
}
}
using System;
using System.Collections.Generic;
namespace CustomFunctionTest
{
class Program
{
static void Main(string[] args)
{
new class1();
new class1("E");
}
}
public class class1
{
public static class1 test1 = new class1("A");
private class1 b = new class1("B");
public static class1 c = new class1("C");
public class1()
{
Console.WriteLine("D");
}
public class1(string str)
{
Console.WriteLine(str);
}
}
}
对。类的字段通常在构造类时初始化
当显式定义静态构造函数时,第二点是正确的,但是当没有静态构造函数(如OP的示例中所示)时,静态字段的初始化可能会被运行时推迟到第一次访问它们时。见: