如我所知,父类的构造函数先被调用,然后被称为子Class.But,为什么在静态构造函数的情况下,它首先从派生类执行,然后从子类执行?
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Child t = new Child();
}
}
class Parent
{
public Parent()
{
我想知道为什么我的静态构造函数输出的是default constructor Static Constructor,而不是Static Constructor and Default constructor或Default constructor。当我使用静态构造函数时,它应该首先执行静态构造函数。但是,从下面的代码来看,
第一个问题:为什么在静态构造函数之前调用默认构造函数?
class Program
{
static void Main(string[] args)
{
var test = Single.S;
}
class Single
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
B b = new B();
public class A
{
static A()
{
Console.WriteLine("Static ctor A");
}
public A()
{
Console.WriteLine("ctor A");
}
}
public
class Bus<T>
{
static Bus()
{
foreach(FieldInfo fi in typeof(T).GetFields())
{
if(fi.FieldType == typeof(Argument))
{
fi.SetValue(typeof(T), new Argument("busyname", "busyvalue"));
}
}
}
}
c
我是c#的新手。请指导我找出这个问题的解决办法。我有一个静态类A,里面有一个静态构造函数。守则如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
}
}
static class A
{
我知道,静态构造函数总是在任何实例构造函数之前优先被调用。但是,考虑我有一个实例类和一个静态类的场景。我想知道为什么结果首先来自Base类,然后是static类?我也验证了互换呼叫,我得到了相应的结果。但是,我的想法是错误的吗,静态类总是应该首先被调用,而不管其他任何实例类?我之所以提出这个问题,是因为我在某个地方看到,当包含静态类的命名空间被触发时,静态类会自动加载。然后,我希望这个静态构造函数首先触发。为什么不是正在发生呢?有没有人能用一种简单易懂的方式解释一下。
public class Base
{
public Base() { Console.Wri
我想弄清楚.NET中的静态字段初始化器的执行时间有多松散。在在线编译器()中运行下面的代码时,我得到了一个TypeInitializationException,但在VS中的测试控制台应用程序中,我得到了预期的1输出。
代码:
using System;
using SimpleInjector;
public class Program
{
public static IFactory Factory { get; set; }
public interface IFactory { T GetInstance<T>() where T:
我对visual studio的intellisense有一个问题。每次我在结构中创建C#静态构造函数时,visual studio的智能感知都会在尝试调用构造函数时中断。它似乎找不到构造器,甚至找不到默认的构造器。有人知道我为什么会有这个问题吗?
public Triangle(int aX, int aY, int bX, int bY, int cX, int cY)
{
A = new Point(aX, bY);
B = new Point(bX, bY);
C = new Point(cX, cY);
}
我正在尝试使用System.Threading.Tasks.Task类来实现并行处理。奇怪的是,任务委托执行在第一个方法调用时停止。我在下面编写了示例代码来重新创建这个问题。
using System;
using System.Threading.Tasks;
namespace TestApp
{
public static class TestClass
{
static TestClass()
{
var tasks = new Task[Environment.ProcessorCount];
我一直在研究Destructor,它又一次影响了我.所以开始搜索和测试比我遇到这样的事情..。
public class Teacher
{
private static DateTime _staticDateTime;
private readonly DateTime _readOnlyDateTime;
/*Resharper telling me to name it StaticReadolyDateTime insted of _staticReadolyDateTime*/
private static readonly DateTime Sta
案例1:
我在试这个
MessageBox m = new MessageBox();
并得到编译错误
'System.Windows.Forms.MessageBox‘没有定义构造函数
案例2:
然后,我创建了一个没有构造函数的类。
class myClass
{
}
并尝试了myClass my = new myClass();这次我没有发现错误.
现在,我的问题:
为什么我在第一种情况下会出错?
因为,两者都是类,而且每个类都有默认构造函数,那么
第一种情况下默认构造函数在哪里?
以下程序的输出为:
Non-Static
Static
Non-Static
这是一个编译器错误吗?我期望:
Static
Non-Static
Non-Static
因为我认为静态构造函数总是在非静态构造函数之前调用。
我在使用.net 3.5和.net 4.0的Visual Studio2010中测试了这一点。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StaticConstructorBug
{
class Program
根据:静态构造函数是自动调用的。它在创建第一个实例或引用任何静态成员之前初始化该类。
这是否意味着每种类型(有或没有静态成员)都有静态构造函数?还是静态构造函数出现在具有静态成员或显式定义的类型中?
这种类型是否有静态构造函数,可以在场景后面自动调用?
class Test
{
public Test()
{
System.Console.WriteLine("Type initialized!");
}
}
在我的众多主题中,有一次是为了在C#中找到一个很好的静态覆盖解决方案(目标C很简单,所以不要告诉我“这是不可能的”,或者说“只有对象是多态的”,因为我知道),我尝试了一种委托方法。我的代码是:
public class Animal
{
public static Func<string> Name { get; protected set; }
static Animal()
{
Name = () => "Animal";
}
}
public class Cat : Animal
{
stati
考虑到下面的_userDataStorage代码,我预计私有数据成员C#将立即初始化。相反,我发现它根本没有被初始化。我在初始化语句上放置了一个断点,它永远不会被击中。这意味着DB静态属性始终返回NULL。静态类是否与非静态类不同?
public static class UserDataStorageWrapper
{
private static UserDataStorage _userDataStorage = new UserDataStorage();
public static UserDataStorage DB
{
get
我明天有一个工作面试,我想回答这个问题:
该类中有一个名为C的类和m方法,该类也有空的构造函数:
Main ()
{
C c = new c();
}
Class C {
public c {
//empty constructor
}
public m {
//does something - doesnt mind
}
}
您需要做的是更改代码,以便在创建实例类C时,方法m将在类构造函数之前被调用。
您必须在不更改main的情况下完成此操作(仅编辑类代码)。
提前感谢!
我想知道是否存在通过静态构造函数而不是公共构造函数初始化数据的缺点。我假设前两个代码狙击手也是这样做的。
下面是一个简短的例子
class Test
{
private readonly static Dictionary<string, string> languages =
new Dictionary<string,string>()
{
{"de-CH", "Language.German".Translate()},
我是AS3新手,我来自Java背景。在AS3中,我有一个初始化的静态constant,PRESETS,并试图在构造函数中访问它,但是我得到了一个错误,说明常量为null。是否在初始化常量之前调用类构造函数?在调用构造函数之前,我希望常量可以随时使用。有人能解释一下这里发生了什么吗?我想试着把这件事做好。
我的代码如下:
public class TteColor {
// This is the constant I'm trying to access from the constructor.
public static const PRESETS:Object =