我得到了一个我制作了静态的类,但这是一个糟糕的选择吗?它应该是一个非静态类吗?使用静态或非静态类
我想在我的班级中设置两个值。
当你给属性值设置它们并获取它们时会有某种冲突吗?有没有什么机会?如果另一个用户具有相同的目标。
我有一个页面调用这个类。 一位用户点击该页面,发生这种情况。
- 设置属性的计算
- 运行的空隙来计算两个属性
- “也许一些其他的功能,运行和需要一些时间”
- 获取两个属性的值
但是如果其他用户击中页面并设置其他值并使第一个用户的值不正确,该怎么办?我想这可能吗?
我想到了一些其他的选择是要么
- 发送所有属性到空隙作为参数,并与我的两个值,我需要回到一个新的类。 (不要将它们存储为静态属性,在使用之前可以由其他用户更改)。
- 使用属性(可能称为BreakTime)创建一个新类。将其作为一个参数发送给void。计算后返回。
- 或者你告诉我什么是最好的选择! :)
这里怎么看起来:
public static class BreakTimeCalculator
{
public static int BreakFromSec { get; private set; }
public static int BreakUntilSec { get; private set; }
public static int CustomBreakSec { get; set; }
public static int FromSec { get; set; }
public static int UntilSec { get; set; }
public static int Equlizer { get; set; }
public static void CalculateBreakFromAndBreakeUntil()
{
var taskLength = UntilSec - FromSec;
var middleOfTask = FromSec + (taskLength/2);
var secondsToMoveLeft = middleOfTask % 300;
var amountEqualizers = CustomBreakSec/Equlizer;
var fiftyFifty = amountEqualizers % 2 == 0;
var leftSideEqualizers = fiftyFifty ? amountEqualizers/2 : (amountEqualizers/2) + 1;
BreakFromSec = middleOfTask - secondsToMoveLeft - (leftSideEqualizers * Equlizer);
BreakUntilSec = BreakFromSec + CustomBreakSec;
}
}
简单地说,如果你需要使一个类是静态的,而不是如果可能的话。我怀疑这是否是这种情况。通常这应该很少发生(例如,在包含扩展方法的类上)。 – HimBromBeere
@HimBromBeere,我会遵循这样的规则:“如果可以的话,让一个类变成静态的,如果你有状态,那么你就不能”。 –
@DavidArno嗯,你可以为静态对象提供(单一)状态,但是它的设计很糟糕。然而,“当你可以”的时候,我认为它的语法正确。 – HimBromBeere