C# 在多个页面上重用WPF方法-我应该使用静态类还是单例?

C# 在多个页面上重用WPF方法-我应该使用静态类还是单例?,c#,C#,我在阅读singleton和静态类之间的差异,但我发现唯一不同的是singleton提供了状态,可以实现接口和派生,而静态类并没有这些东西。我不(可能不会)需要实现接口或从类派生,所以我认为静态类是正确的做法。但是我想知道更多关于对象状态和静态类无状态的事情。您将如何定义对象的状态?状态是否意味着可用于1 WPF页面中的事件?这可能是一个愚蠢的问题,但我从来没有遵循过理论,我只是将事情编码为工作:)这就是我现在学习它们的原因 回到话题上来。 我有一种方法,可以为标签设置动画,该方法在不同WPF页

我在阅读singleton和静态类之间的差异,但我发现唯一不同的是singleton提供了状态,可以实现接口和派生,而静态类并没有这些东西。我不(可能不会)需要实现接口或从类派生,所以我认为静态类是正确的做法。但是我想知道更多关于对象状态和静态类无状态的事情。您将如何定义对象的状态?状态是否意味着可用于1 WPF页面中的事件?这可能是一个愚蠢的问题,但我从来没有遵循过理论,我只是将事情编码为工作:)这就是我现在学习它们的原因

回到话题上来。 我有一种方法,可以为标签设置动画,该方法在不同WPF页面的不同标签上使用:

    private void SetUpAnimation()
    {
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = -LabelNameSong.ActualWidth;
        doubleAnimation.To = CanMain.ActualWidth;
        doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
        doubleAnimation.Duration = new Duration(TimeSpan.Parse("0:0:10"));
        LabelNameSong.BeginAnimation(Canvas.RightProperty, doubleAnimation);
    }
因为我不想复制粘贴到每个页面上,所以我想创建helper类、static类或utility类(与我理解的相同)来拥有这个方法,我可以在需要的任何地方调用它(当然,将正确的标签作为参数传递)


谢谢你的建议。谢谢。

我会选择静态,因为不同标签的动画之间没有交互。

我会选择静态,因为不同标签的动画之间没有交互。

简单地说,状态是存储在多个方法调用之间的数据。因此,对于不需要存储任何内容并稍后返回的内容,只需使用静态方法。这将是我在这里的建议


当您想要控制如何访问状态时,封装在类中的状态特别有用,因为您可以将其限制为您控制的类的方法。这有助于保持状态整洁且易于管理,因为您可以轻松查看与之相关的代码。

简单地说,状态是存储在多个方法调用之间的数据。因此,对于不需要存储任何内容并稍后返回的内容,只需使用静态方法。这将是我在这里的建议


当您想要控制如何访问状态时,封装在类中的状态特别有用,因为您可以将其限制为您控制的类的方法。这有助于保持状态整洁且易于管理,因为您可以很容易地看到与之相关的代码。

静态类是一个方法都是静态的类,并且方法属于类,而不是从该类创建的对象。当您不需要对象来保存值并在以后修改它们时,通常使用静态类,而是希望传入值,并且只希望该方法执行始终相同的计算或操作


singleton是一种设计模式,其中普通类创建了一个对象,并重用该对象。一个单例可能有它所处理的值,但由于该对象只创建一次,因此与该单例交互的每个其他对象都将从相同的值中提取。如果您的值在应用程序的整个生命周期中可能需要更改,但需要共享,或者如果您的方法需要在以后存储和检索值,那么单例非常有用。

静态类是指方法都是静态的类,这些方法属于,而不是从该类创建的对象。当您不需要对象来保存值并在以后修改它们时,通常使用静态类,而是希望传入值,并且只希望该方法执行始终相同的计算或操作

singleton是一种设计模式,其中普通类创建了一个对象,并重用该对象。一个单例可能有它所处理的值,但由于该对象只创建一次,因此与该单例交互的每个其他对象都将从相同的值中提取。如果您的值在应用程序的整个生命周期内可能需要更改,但需要共享,或者如果您的方法要求以后存储和检索值,那么单例非常有用。

如果方法不访问类中的全局变量,则为静态类

如果你有全局变量,比如一个列表,只需一个

如果方法不访问类中的全局变量,则为静态类


如果你有全局变量,比如列表,我不同意。全局变量可以是静态的,并且可以使用静态方法访问。单例还有其他优点,但它们不是实现全局状态的唯一方法。你的观点是无效的。这就是单例模式的定义。如果你有静态变量,你的设计是错误的,唯一的静态变量就是一个单例实例。显然在这种情况下。@MarkHomer你的回答让人觉得单例要么是实现全局状态的唯一方法,要么永远是更好的方法。大多数情况下,单例设计比全局静态变量更好,但实际上,与全局状态相关的许多问题在这两种方法中都很常见。看见如果说一个设计是错误的,因为它使用了一个全局变量而不是一个单一变量,那就太笼统了。很可能两者都错了,我不同意。全局变量可以是静态的,并且可以使用静态方法访问。单例还有其他优点,但它们不是实现全局状态的唯一方法。你的观点是无效的。这就是单例模式的定义。如果你有静态变量,你的设计是错误的,唯一的静态变量就是一个单例实例。显然在这种情况下。@MarkHomer你的回答让人觉得单例要么是实现全局状态的唯一方法,要么永远是更好的方法。大多数情况下,单例将是一个比全局单例更好的设计