问题标签 [static-methods]

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 投票
3 回答
167 浏览

c# - 将普通方法转换为静态方法有什么好处?

从问题中可以清楚地看出,如果我将普通方法转换为静态方法,我将获得什么收益?

0 投票
5 回答
188 浏览

c# - 类设计:允许一个类既可以用作对象,也可以提供公共静态方法

我有一个愚蠢的小类“ FileSystemSize ”,它既可以用作对象,也可以通过公共的静态方法使用。输出是相似的,但在每种情况下都不相同。

该类最初是静态的,但我添加了将其初始化为对象的可能性,以允许在未来版本中使用新的“便捷方法”进行扩展,而无需进行大量参数解析。例如,我有GetKBString()GetMBString()等...方法可以方便地按照我想要的方式格式化文件大小(作为字符串)。在内部,该类将文件字节大小存储为双精度值。

如果这完全有道理,我有点困惑。看来我应该把它分成一个静态版本和一个对象版本,就像微软为 Directory 和 DirectoryInfo 所做的那样。但是,对我来说,将这一切集中在一个名称不会被弄错的地方似乎更容易——应该清楚 FileSystemSize 的作用是什么?对维护有什么我没有预料到的影响吗?那是什么味道?

0 投票
9 回答
79018 浏览

c++ - 命名空间 + 函数与类上的静态方法

假设我有或将要编写一组相关函数。假设它们与数学有关。在组织上,我应该:

  1. 编写这些函数并将它们放在我的MyMath命名空间中并通过以下方式引用它们MyMath::XYZ()
  2. 创建一个名为的类MyMath并使这些方法静态并引用类似的MyMath::XYZ()

为什么我会选择其中一个来组织我的软件?

0 投票
5 回答
2886 浏览

asp.net - 为什么我的 ASP.Net 静态函数的“上下文”在用户会话之间交叉?

我想我需要一些帮助来理解静态对象如何在 ASP.Net 应用程序中持久存在。我有这种情况:

类库中的 someFile.cs:

类库中的 someOtherFile.cs:

一些 ASP.Net 页面:

这个想法是我有一个业务对象,它基于 UI 级别的回调函数执行一些操作。我将回调函数设置为 Page_Init 上的静态变量(在实际代码版本中,在母版页中,如果这有所不同)。我认为页面的每次执行,无论它来自哪个用户会话,都将通过该函数的逻辑,但对它自己的数据集进行操作。相反,似乎正在发生的是并发问题。

如果我运行一个用户会话,那么当它在调用该回调函数之间睡眠时,启动另一个用户会话,当第一个会话从睡眠中恢复时,它会从第二个用户会话中获取会话 ID。这怎么可能?

mydebug.txt 的输出:

为什么函数的上下文(意思是其本地数据等)会从一个用户会话覆盖到另一个用户会话?

0 投票
3 回答
499 浏览

c++ - 在编译时区分c ++中的静态和非静态方法?

对于一些用于识别实例的跟踪自动化,我想调用以下任一方法:

  • 包含对象的非静态方法返回其标识符
  • 其他总是返回相同 id 的东西

我目前的解决方案是有一个基类,它有一个方法 which() 和一个全局函数 which() 如果不在对象的上下文中应该使用它。然而,这不适用于静态成员函数,这里编译器更喜欢非静态方法而不是全局方法。

简化示例:

我能否以某种方式避免使用诸如静态成员函数的特殊宏之类的变通方法(也许使用一些模板魔术)?

0 投票
3 回答
157 浏览

php - PHP自定义静态方法访问

我在 PHP 中,我必须访问名称必须更改的对象的静态方法。

前面的代码给了我“语法错误意外::”。
我也试过写 {$nomControlleur}::singleton(); 但它给了我更多的错误,非常感谢你的帮助。

钢球

0 投票
2 回答
1247 浏览

java - jax-ws web 方法可以返回具有静态方法的对象吗?

我想从 Web 服务中返回它,如下所示:

似乎无法找到关于我是否可以、应该、不能或不应该的明确答案。

0 投票
2 回答
2555 浏览

immutability - 与静态方法相比,不可变对象有哪些优势?

我也可以将其实现为:

我什么时候应该选择不可变对象而不是静态方法?在任何情况下,情况可能相反吗?

另外,在我看来,不可变对象不应该有 void 方法。你怎么看?

0 投票
7 回答
295 浏览

c# - 参数及其在方法中的使用如何影响静态/实例设计决策?

只是一个简单的问题:

我读过一个类在不修改其实例时应设为静态。因此,如果我有一个名为 Account 的类,并且它具有诸如 Id、Duration 等属性并且这些属性不会被该类修改,那么可以将其设为静态,否则它应该保持静态。

这(实例本身是否通过其属性发生变异)如何影响静态/实例决策?

此外,如果一个类接受大量参数(比如这个 Account 类,坚持我们的类比),但不修改实例(因此没有 Account 变量更改 - 没有像 Account.x = y // 其中 y 来自另一个类) ,我认为这仍然可以设为静态?所以问题不是参数或它们来自哪里,而是它们做了什么?

如果它是一个属性,则与决定是否将字段设为静态时适用相同的原则(例如,如果该字段保存的数据获取成本很高,那么让一个字段保存它 - 静态 - 如果我错了,请纠正我)。

我注意到 C# 上的静态方法有超过 100 个线程(这属于静态方法,因为它正在处理参数),我将阅读所有这些,因为有很好的问题和很好的答案。

谢谢

0 投票
6 回答
2605 浏览

java - 如何在大型 Java 项目中查找静态方法调用?

我正在重构一些 Java 代码,通过将一些静态方法调用更改为非静态调用来更加解耦,例如:

我的问题是,在大型项目中,很难找到进行静态方法调用的位置。有没有一种简单的方法可以从命令行或在 Eclipse 中执行此操作?

这样的工具需要让我忽略诸如此类的“良性”静态方法调用(要么首先不找到它们,要么允许它们从搜索结果中轻松删除):

一些澄清:

  • 我对查找通过反射进行的方法调用不感兴趣
  • 我不知道这个项目中目前存在哪些静态方法,所以它不像使用 Eclipse 的“Open Call Hierarchy”命令(Ctrl-Alt-H)搜索调用者那么简单,尽管搜索非私有的简单方法静态方法会让我使用这种方法
  • 我也有兴趣找到对位于我的项目之外的静态方法的调用,例如 javax.mail.Transport#send
  • 我正在寻找免费(如啤酒)解决方案