有几个问题是静态类。其中一些来自我刚才读过的东西所以我想要消除任何神话。
我知道,如果我需要一个类的一个实例,例如喜欢代表一个公司(即公司详细信息),那么该类可以是静态的。为什么我需要多个相同的实例?
然而:
1)类的方法中的参数选择(即类型或其实例类/接口等),实例或其他方式是否会影响使类静态化的决定?因此,如果我提供一个实例对象作为参数(例如myMethod(new Car()))或任何东西,这是否会对是否使该类保持静态有任何影响?我读了一会儿,这可以,所以我试图消除一个神话。
2)如果静态类不使用其他类的状态,这是否与使类静态有关?
IE是一个包含字段的静态类,该字段在类的ownn方法中使用。
我还在这里读了一篇关于静态的文章,一位成员说,如果该类不包含“可重复”功能,它可以是静态的。在这种情况下,可重复性是什么意思?
由于
答案 0 :(得分:2)
总而言之,如果方法(或类)永远不会在其自己的实例上使用或修改状态,则使其成为静态的。换句话说,如果它没有使用this
(显式或隐含),那么它应该是静态的。
答案 1 :(得分:2)
使对象不是静态的三个原因:
您的对象需要多次设置为新初始化状态。您可以编写一个方法来进行重新初始化,但请注意,虽然静态类可以有一个构造函数(我相信在第一次引用静态类的成员之前不会调用它来触发要加载的类),但是你不能称之为运行时。
当用户取消编辑“工作”副本时,您可能希望将对象的“纪念品”副本撤消到该位置。
可以同时从多个实例化对象访问静态对象。我在ASP.NET Web应用程序中看到了一些问题,其中静态对象用于在页面加载处理期间存储用户和状态数据,这些数据将在来自不同用户的同时页面请求之间共享。
答案 2 :(得分:1)
1)它不能。静态方法和实例方法可以具有相同的签名,涉及参数类型。
2)没有。
可重复:这可能是指存储在类实例中的状态。如果只需要一个给定程序状态(例如,分数)的存储,则可以使用带有静态字段的静态类。如果您需要多次该状态(例如,每个玩家的另一个分数),则使用实例字段,因为您可以根据需要创建任意数量的实例(在这种情况下,与玩家一样多的实例)。 / p>
答案 3 :(得分:1)
我认为简单的总结:如果一个类的所有成员都是静态的,那么你应该将该类标记为静态。这里没有什么复杂的事情,就这么简单。