【问题标题】:Examples of static's utility?静态实用程序的示例?
【发布时间】:2018-07-29 23:25:58
【问题描述】:

我浏览了该站点,没有发现任何主题询问(或给出)静态在 C# 上的实用程序的具体示例。我是一个初学者,想找到证明静态有用性的给定案例,以便比对静态类/方法/等的概念理解更进一步。我只知道一两个示例,例如能够创建一个在运行时生成对象或值的方法,但通过删除创建的新值(当脚本再次运行)如果之前已经创建了一个值。代码是这样的:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MusicPlayerScript : MonoBehaviour {

    static MusicPlayerScript instance = null;

    // Use this for initialization


    void Start () {
        if (instance != null)
        {
            Destroy(gameObject);
            print("Duplicate self-destructing");
        } else
        {
            instance = this;
            GameObject.DontDestroyOnLoad(gameObject);
        }
    }
    // Update is called once per frame
    void Update () {

    }
}

还有什么其他的例子可以给我吗?谢谢!

【问题讨论】:

  • 这个问题太笼统了。答案需要一本书的章节。
  • "The Static keyword can be applied on classes, variables, methods, properties, operators, events and constructors." 正如@MarkBenningfield 所说-这使您的问题非常广泛-您会通过使用谷歌或查看C#书籍找到很多信息。更多示例here
  • “我浏览了论坛...” Stack Overflow 不是一个讨论论坛,它是一个问答网站。有区别。请查看网站tour
  • 为什么要广泛?我不要求深入的解释,甚至不要求任何类型的概念洞察力。只有一两个例子,比如“你可以用静态来做这样那样的事情,以改进你的代码/程序上的这个和那个”。

标签: c# function class methods static


【解决方案1】:

这很容易。如果您要做的事情与您想要将其分组到的类的特定对象没有直接关系,您可以定义一个静态方法。例如,如果您需要一个非常具体的帮助函数,它作用于您的一个属性而不是整个对象。

静态成员变量允许你定义例如你的类的一个单独的对象。例如,如果您的类是“Scene”并且您想要一个名为 World 的包罗万象的场景对象,您将定义静态场景世界。

在许多方面,静态可以被认为是旧编程语言中所谓的全局变量。使它们比全局变量更危险的是正确的命名空间解析。除非您知道如何找到它们,否则您不会在任何地方看到它们,即。在哪个命名空间路径上。

【讨论】:

  • 我仍然认为static 被过度使用并且有点危险,因为它会产生难以发现的耦合,并且还会使单元测试更加困难。它当然有它的用途,但我经常看到它被滥用。
  • 可能是真的。至少我用的不多。通常只有私有静态。
猜你喜欢
  • 2012-10-04
  • 1970-01-01
  • 2011-08-30
  • 2017-10-11
  • 1970-01-01
  • 2016-07-11
  • 2023-03-08
  • 1970-01-01
  • 2012-11-12
相关资源
最近更新 更多