包含一个或多个虚函数的每个类都有一个与之关联的Vtable.一个名为vptr的void指针指向该vtable.该类的每个对象都包含指向同一Vtable的vptr.那为什么vptr不是静态的呢?而不是将vptr与对象相关联,为什么不将它与类关联?

我有一堂课如下:
static class Configuration
{
private static AppSettingsSection _appSettingsLogsSection;
static Configuration()
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
_appSettingsLogsSection = config.GetSectionGroup("Logs").Sections["appSettings"] as AppSettingsSection;
}
public static int LogSendIntervalMinutes = Convert.ToInt32(_appSettingsLogsSection.Settings["LogSendIntervalMinutes"]);
}
Run Code Online (Sandbox Code Playgroud)
现在,根据我的理解,应该在第一次引用任何静态成员之前调用静态构造函数。但令人惊讶的是,它的行为却并非如此。当我从 Main 类引用LogSendIntervalMinutes时,调用直接转到静态字段,而不是触发静态构造函数,从而导致 NullReferenceException。
我在这里做错了什么吗?我的理解是否正确?
我们正在开发一种新的API.我的同事和我对内部课程是否应该进行单元测试有不同的看法.
我的同事给出的不是单元测试内部课程的要点
我给出的分数有利于单元测试内部课程
我尝试在线搜索,但似乎没有关于此的最佳实践或标准意见.你认为一个好的方法是什么?
对java人员的注意: " internal "是C#中的一个关键字,它限制了类对程序集的可见性.在程序包/程序集之外无法访问该类.它不等同于私人阶级.
我试图为此找到答案,但是没有找到。我想知道的是在哪个线程Task.ContinueWith委托上被调用。等待,我知道它会尝试在捕获的SynchronizationContext文件上运行它,但是没有任何文档记录ContinueWith。
我还尝试了一个示例程序,尽管它似乎是在Threadpool线程上调用的,但我怀疑在某些情况下它可能会调用SynchronizationContext。也许有人可以提供明确的答案。
我有一个处理大量内存数据的应用程序.现在,有时会发生内存限制为2GB/app并且我的程序挂起.任务管理器中的内存使用量变得混乱(连续波动从2GB到6GB)我想要的是当内存使用量达到特定限制时,程序应该优雅地退出.我不想手动干预用户查杀应用程序.这可能吗?