问题标签 [static-classes]

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 投票
1 回答
41 浏览

php - 是否应该将所有类实例中相同的数据保存在单独的静态类中?

如果我有一个将被实例化的类,它需要引用每个类都相同的数据和/或函数。应该如何处理以遵循正确的编程实践

示例(在 PHP 中):

然后每次创建一个 Column 时,它将保存该$_validTypes变量。这个变量实际上只需要在内存中定义一次,其中创建的所有列都可以引用静态类的静态函数type_is_valid,该静态类将保存$_validTypes变量,只声明一次。

静态类的想法是说ColumnHelper还是ColumnHandler处理这个问题的好方法?或者有没有办法在这个类中保存静态数据和方法?还是重新定义$_validTypes每个 Column 是一种不错的做事方式?

0 投票
3 回答
1115 浏览

c# - 静态类到字典在c#中

我有一个只包含字符串属性的静态类。我想将该类转换为具有key=PropName,的名称-值对字典value=PropValue

下面是我写的代码:

输出

它没有读取任何属性 - 谁能告诉我我的代码有什么问题?

0 投票
3 回答
1974 浏览

java - 如何在静态类中初始化最终静态变量?

所以我正在使用处理从数据文件中绘制地图。我想存储类内第一行的一些信息。在处理这个类是 PApplet 的一个内部类,所以它必须是一个静态类(否则我得到一个错误:静态字段只能在静态或顶级类型中声明)。

当我运行这段代码时,我得到一个错误,因为我不能使用 loadStrings() 函数(它是非静态的)。

所以我想要的是拥有可以从“population.tsv”文件初始化的静态最终变量。你有什么想法/建议?

0 投票
1 回答
209 浏览

kohana - Kohana 辅助属性

我有一个问题一直困扰着我。目前,我已经开始使用 Kohana 3.2 框架。我编写了一个助手来处理一些功能 - 我有许多方法,它们(应该是)声明为 STATIC。但是,所有这些方法都以某种方式与数据库一起工作,所以我需要加载一个模型。目前,每个方法都有一个像这样的非静态变量:

$comment = 新的 Model_Comments;
$comment->addComment("abc");

好的,它似乎正在工作,但后来我想通过使用类属性来保存模型的实例(也使用 is 类)来摆脱这种冗余。

像这样的东西:

私人静态$评论;// 声明属性
self::$comment = new Model_Comment; // 这是在辅助 __constuct 方法中完成的
self::$comment->addComment("abc"); // 并在方法中调用它。

但是,我失败了:调用非对象上的成员函数 addComment()

问题是:有可能做到吗?也许还有其他一些方法?

对不起,说来话长,谢谢您的建议!:P

0 投票
1 回答
1779 浏览

c# - 静态非托管 dll C# 包装器和多线程、多域

早上好。

这是我的场景:我有一个与自动快速回报设备交互的第 3 方非托管 foo.dll,称为 FooDevice。我围绕 foo.dll 的方法编写了一个包装器,称之为 FooWrapper,通过编组和一些锤击,我终于使它工作了;您可能知道,在使用DllImport所有公开的方法时都需要标记为static,而extern foo.dll 公开了一些方法和一个回调函数指针;当我尝试在不同的线程中同时连接两个设备时,我的包装器在尝试挂钩此回调函数时挂起。我知道静态的东西是线程共享的,所以我考虑AppDomain为每个 FooWrapper 实例使用不同的东西。你认为这是做这种工作的正确方法吗?

这是我的 FooWrapper 的一点:

你能建议我一种方法来正确地验证 FooWrapper 不止一次(在相同或不同的线程或 AppDomain 中)吗?

感谢你们。干杯,南多

0 投票
2 回答
2141 浏览

c# - 在 C# 中使用两个具有相同名称的静态类

我有一个包含在我的 C# 项目中的 DLL。我们称它为“one.dll” 这个 DLL 包含一个名为“staticclass”的静态类

我有另一个 DLL,我也包含在同一个项目中。我们称它为“two.dll” 这个 DLL 还包含一个名为“staticclass”的静态类

现在,当我在我的项目中同时包含两个 DLL 并尝试访问“staticclass”时,它自然会出错。有没有办法我可以更改类的名称或给它某种别名所以让我们说“one.dll”中的“staticclass”将保持原样,我可以给“两个”中的“staticclassTwo”提供别名.dll"

请注意,我无权访问“one.dll”和“two.dll”的源编解码器

0 投票
2 回答
573 浏览

singleton - 使用静态或单例类而不是 System.Web.HttpRuntime.Cache?

我坚信用硬件来解决软件问题并不是最好的策略。因此,当注意到我们的一台服务器(当前运行 2 个演出)存在一些内存问题时,我将其归结为 System.Web.HttpRuntime.Cache 的使用。虽然对于几个站点来说,这是有道理的,抛出 50 个都使用 System.Web.HttpRuntime.Cache 的站点开始拆除墙壁。

如果没有外部缓存服务器的选项,我正在考虑修改代码以使用静态类或单例来保留全局数据(另一个选项是发出额外的数据库请求)。

我不完全清楚这是否会有任何变化,因为数据仍然“在内存中”,我们可能只需要在服务器上投入更多内存。

在单例或静态类上使用 System.Web.HttpRuntime.Cache 是否有更多的开销,有哪些推荐的方法来解决这个问题?

- 更新 -

在监视当前文件缓存内存使用情况时,我注意到当我在同一个应用程序池上访问一些站点时这个数字出现了峰值。这个数字跃升至 1,000,000(我假设的字节数)。我注意到随着 活动刷新条目的数量增加然后减少,这个数字最终开始减少。

我怎样才能更快地清除它,因为当多个应用程序池中的这个数字很高时,问题似乎就开始了?

而不是仅仅撕掉缓存(正如建议的那样,这可能不是最好的主意),简单地为缓存的对象设置一个更快的到期时间可能会产生更好的结果?

0 投票
5 回答
193 浏览

c# - C# 中是否存在包含用于静态方法返回的布尔值和字符串的内置类型?

我正在寻找从函数或方法返回的类型,首先传达它是否成功,然后将消息(作为字符串)附加到它以传递有关失败原因的更多信息。它可能是应用程序退出代码行中的内容;但是,我不会创建一整套退出代码来索引特定的错误消息。我确实喜欢单个“成功”退出代码的想法,因此可以快速检查调用是否失败并相应地工作。

我想让它成为一系列静态方法(如服务调用)的返回类型,我可以为此创建一个包含这两个字段(bool 和 string)的类;但是,我觉得可能已经存在类似的东西,尽管我一直没能找到它。此外,如果有更好的做法来处理从方法返回以获取此类信息,或者完全针对此类静态类的一般规则,我欢迎您提出意见。

为了更好的可视化:

0 投票
4 回答
2613 浏览

c# - 低级差异:具有静态方法的非静态类与具有静态方法的静态类

我想知道使用具有静态方法的非静态类与具有相同静态方法的静态类相比的一般好处(或缺点)是什么,除了我不能使用非静态类中的静态方法作为扩展方法。

例如:

与此相反:

使用一种方法而不是另一种方法对性能/内存的影响是什么?

注意:假设我不需要实例化该类。我的用例场景仅限于这样的事情:

0 投票
4 回答
9191 浏览

c# - 在静态方法中返回“this”

我想制作一个具有流畅界面的静态类,但出现错误:

'this' 在静态属性、方法中无效...

这是我的代码:

这使我能够做到MyClass.Root().And().Something();

有没有办法做到这一点或解决方法?