问题标签 [static-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2078 浏览

c# - c#静态构造函数中的竞争条件

我正在和一个朋友辩论,他说静态构造函数可以让位于竞争条件,因为静态构造函数可以被多次调用。似乎这只能发生在大容量多线程环境中。这甚至可能吗?

我找不到任何文件来证明他错了。有人对此有任何见解吗?

谢谢!

0 投票
1 回答
1225 浏览

c# - 任务和线程不在 Linqpad 的静态构造函数中运行

此代码无限期地t.Wait()在线等待。

我希望任务能够立即运行并完成。关于为什么的任何想法?这似乎不会发生在实例构造函数中。v4.42.01

0 投票
4 回答
2432 浏览

c# - 具有不同配置值的单元测试静态构造函数

我有一个带有静态构造函数的类,我用它来读取 app.config 值。如何对具有不同配置值的类进行单元测试。我正在考虑在不同的应用程序域中运行每个测试,因此我可以为每个测试执行静态构造函数 - 但我在这里有两个问题:
1.我不知道如何在单独的应用程序域中运行每个测试运行
2.如何在运行时更改配置设置?

有人可以帮我吗?或者有人有更好的解决方案吗?谢谢。

0 投票
3 回答
754 浏览

c# - 如何使静态构造函数成为非私有的?

C# 中的静态构造函数上不允许使用public,之类的访问修饰符。private然而,Visual Studio 代码分析在 C# 安全类别中有一条警告,上面写着“ CA2121:静态构造函数应该是私有的”。

是否可以将静态构造函数设为非私有?或者这是 Visual Studio 代码分析的错误?

澄清:我不想让任何构造函数成为非私有的。所以为什么?” 问题无关紧要。我只是对两个微软工具之间的矛盾感到好奇,想看看是否有什么我不知道的关于静态构造函数是如何处理的。

0 投票
4 回答
4302 浏览

c# - 为什么我可以更改私有静态只读字段但不能更改公共字段?

有这样的代码:

为什么我可以更改私有静态只读字段但不能更改公共字段?

PS:当然我正在使用属性。

0 投票
4 回答
22182 浏览

c# - 显式调用静态构造函数

我想为下面的课程编写单元测试。
如果名称不是“MyEntity”,则 mgr 应为空白。
负单元测试
使用管理器私有访问器我想将名称更改为“测试”,以便管理器应该为空。然后将验证经理值。为此,我想显式调用静态构造函数,但是当我使用调用静态构造函数时

name 始终设置为“MyEntity”如何将 name 设置为“Test”并调用静态构造函数。

0 投票
3 回答
740 浏览

c# - 为什么不对用作泛型类型参数的类调用静态构造函数?

给定以下类:

输出是

根据规范,这是有道理的:

在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。

但是我很好奇为什么当类型被引用为泛型类型参数时不调用静态构造函数。

0 投票
3 回答
14453 浏览

c# - .Net 中的私有与静态构造函数

我搜索了很多,但没有一个答案是明确的(至少对我来说!)。现在我把这个问题放在 SO 中,因为我相信我无法在其他任何地方得到更明确的答案。

我什么时候应该在我的类中使用私有/静态构造函数?

我厌倦了通常的答案,所以请帮助我提供一些实时示例以及使用这些构造函数的优点/缺点。

0 投票
5 回答
1898 浏览

c# - 如何检查是否调用了静态构造函数?

我有一些缓存来自数据库的数据的类,当调用它们的静态构造函数时,这些类会加载数据。

我需要在所有这些类中调用静态 Reload 方法,除了那些尚未初始化的类。

例如:城市缓存数据库中的数据

问题是 City 可能还没有被使用(它可能没有在这个服务中使用)并且没有理由从数据库中加载它。

我的 reload all 方法看起来很像这样:

我需要一些帮助来实现 StaticConstructorHasBeenCalled。

0 投票
1 回答
166 浏览

c# - 如何检测静态构造函数是否在.net中执行?

我正在 Intel Inspector 下测试复杂的 .net/COM 应用程序(本机内存泄漏)。在 .net 代码的很多地方,我们在静态字段中缓存对 COM 对象的引用。显然,Inspector 将这些标记为泄漏。在少数情况下,添加抑制就足够了,但有时标记的对象数量(作为主 COM 对象的一部分创建)失控(数百个),抑制这些对象可能会隐藏实际泄漏的相似模式。长话短说——就在进程退出之前,我正在遍历 appdomain 中加载的所有程序集中的所有类,并且我将引用我的 COM 对象的静态字段设置为空。如果我可以打印所有引用 COM 对象的静态字段,即使它们尚未被接受为有效缓存(并且可能是实际泄漏),这对于未来的使用会非常有用。

但是,如果从未使用过 type,它的静态构造函数将在我调用 getField 时执行(查看它是否为空),并可能创建更多 COM 对象。有什么方法可以检测当前 AppDomain 中是否使用过类型?