问题标签 [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 投票
28 回答
847305 浏览

java - Java内部类和静态嵌套类

Java中内部类和静态嵌套类之间的主要区别是什么?设计/实施是否在选择其中之一时发挥作用?

0 投票
11 回答
35311 浏览

c# - 什么是“静态”类?

在 C# 中有什么区别:

和:

0 投票
2 回答
2495 浏览

.net - ASP.NET MVC、ActionFilters、静态类和传递数据

我想听听您的意见,也许对以下情况有更好的建议:

我已经定义了一个自定义的 ActionFilter 来完成一些工作并产生一些价值。我想在控制器操作和模型中使用该值。

现在,我可以使用 TempData 将该值从 ActionFilter 传递给任何控制器操作方法,然后将该值分配给传递给返回视图的所有模型。

我确信它会起作用,但是这个 TempData 将在会话中出现,在没有人真正需要它的地方和时间。该值应该在单个请求期间仅在代码中使用,之后它有效地无效。

我提出了两个选择:

  1. 在 ActionFilter 中,我在 OnActioExecuting() 的 TempData 中设置了该值,并在 OnActionExecuted() 中将其删除。我是否正确理解,在调用 OnActionExecuted 时,控制器操作已完成,响应已生成,并且此 TempData 内容尚未进入会话?

  2. 在我的任何自定义静态类(逻辑)中,我只为这个值定义一个公共属性,并在需要时使用它。这个静态字段在 OnActionExecuting() 和实际执行控制器方法之间不会丢失吗?在服务器上的请求处理期间是否有可能丢失此值的任何其他问题?

我还没有考虑过其他/更好的选择吗?

0 投票
4 回答
7251 浏览

c# - 在静态类中包装会话处理

我将所有直接会话交互分离到一个单独的类中并使其成为静态,因为我不想多次创建新对象。但是,我希望确保没有并发问题或其他奇怪的惊喜。

这是代码:

0 投票
3 回答
83244 浏览

c# - 为什么静态类不能实现接口?

可能重复:
为什么 C# 不允许静态方法实现接口?

在我的应用程序中,我想使用一个存储库来进行原始数据访问(TestRepository、、SqlRepositoryFlatFileRepository)。因为这样的存储库将在我的应用程序的整个运行时使用,所以将它设置为静态类对我来说似乎是明智之举,这样我就可以去

无需一直重新生成它。因为我希望我的存储库是可互换的,所以我希望它们实现一个通用接口:IRepository. 但是当我尝试这样做时,我得到:

静态类不能实现接口

为什么他们不能?你如何建议我改变我的设计呢?有我可以使用的模式吗?

更新
五年后:这个问题被访问了 20k+ 次,我了解了存储库模式的缺点,了解了 IoC 并意识到我的问题表述得很糟糕。

我并没有真正问接口的 C# 规范是什么,而是为什么它故意以这种特定方式限制我。

实际的答案是在实例或类型上调用方法的语法是不同的。但问题已经结束。

0 投票
7 回答
19100 浏览

static-classes - 你应该避免静态类吗?

静态类被认为是不好的做法吗?几天前我读了一篇关于这个的文章(找不到它,抱歉),它基本上说拥有静态类(尤其是那些“帮助”类)通常是错误代码的标志。这是正确的,如果是,是什么原因?

0 投票
5 回答
4098 浏览

c# - 在 C# 中扩展 Enumerable 类?

我有情况在 c# 中扩展 Enumerable 类以添加接受长参数的新 Range 方法。我无法定义这样的方法

由于扩展方法只能通过其对象访问。它给了我一个错误

'System.Linq.Enumerable':静态类型不能用作参数

有人可以澄清我如何做到这一点

注意:我知道我们可以在没有扩展方法的情况下轻松解决这个问题,但我需要这个 Enumrable 类。

0 投票
2 回答
5884 浏览

.net - 模拟静态类

我有一个静态类,它包装了一些来自 winspool 的本机方法:

我想模拟它们进行单元测试,但找不到这种模式。(每个人都避免使用静态类吗?)

0 投票
3 回答
10420 浏览

c# - 静态类的扩展方法?

我知道我可以执行以下操作来扩展课程。我有一个我想扩展的静态类。我该怎么做?我想写ClassName.MyFunc()

0 投票
2 回答
209 浏览

c# - 奇怪的静态类问题

下面是我非常简单的静态类。不知道出了什么问题。我在具有正确“使用”语句的非静态类中使用它。Intellisense 看到类和它的一种方法。

我收到错误

当前上下文中不存在名称“SQLUserDataManager”。

更新:这是我正在使用它的行。

问题解决了

我有一个 DLL,其中包含编译时出错的文件。在这个 DLL 中,我还没有包含包含这个文件的新文件。我包含了文件,一切都很好!^_^