gpt4 book ai didi

c# - 我应该在这里使用 static 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:54 25 4
gpt4 key购买 nike

我已经阅读了静态的优点/缺点,但我不确定如何从性能的角度来看我的情况。

我有一个 classA 具有不同的变量 以及具有计时器函数:

class ClassA
{
// More vars...
private System.Timers.Timer _values;
public ClassA(IntPtr handle, String t)
{
_handle = handle;
_title = t;
CheckRoutineAndContinue();
}

CheckRoutineAndContinue 是这样的:

    private void CheckRoutineAndContinue()
{
_values= new System.Timers.Timer();
_values.Elapsed += delegate { Check(); };
_values.Interval = 200;
_values.AutoReset = false;
_values.Start();
}

private void Check()
{
if (_max> 5) StopCheck();
else
{
// Logic...
_max++;
}

private void StopCheck()
{
if (_values!= null)
{
_values.AutoReset = false;
_values.Enabled = false;
_values.Stop();
}
}

我的问题是:我将有多个 ClassA 对象。如果我为 CheckRoutineAndContinue() 创建一个静态方法,它将只创建一次并且我可以将我需要使用的参数传递给它,而如果我在我的类中有它,我不需要发送 ClassA 的变量,并且只会创建一次。所有 ClassA 对象执行的代码都是相同的,但每个对象的变量值不同。

这是创建静态方法并以某种方式通过参数传递所有变量以便只创建一个函数的好机会,还是建议将这些函数放在同一个类中,即使它们将要创建每次我创建一个新的 ClassA 对象?

假设在这种情况下测试没什么大不了的。

我会假设静态方法更好,因为每次都会再次创建函数,但我不是 100% 而且我不确定静态方法是否可以正确处理计时器,因为我需要根据需要开始-停止它关于定时器内部函数的逻辑。

最佳答案

我看不出在这里使用 static 有什么真正的好处。我不同意你的表现会得到改善;你仍然会做同样的事情。

通常,使用静态有两个原因:(1) 您希望某物成为单例对象(例如,整个应用程序共享的某些数据的位置;或 (2) 所涉及的方法不会改变任何状态类的,因此标记为静态的,因为这在某种程度上优化了内存中类实例的创建(以非常小的方式)。

关于c# - 我应该在这里使用 static 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com