【问题标题】:What does "this" word means and what does "static" means?“this”这个词是什么意思,“static”是什么意思?
【发布时间】:2018-10-29 15:27:13
【问题描述】:
public class AudioManager : MonoBehaviour 
{
    private static AudioManager audioManager = null;

    private void Start () 
    {
        if (audioManager != null) 
        {
            Destroy(gameObject);
            print(audioManager + "'s self destroy requested.");
        } 
        else 
        {
            audioManager = this;
            GameObject.DontDestroyOnLoad(audioManager); 
        }
    }
}

我知道这段代码的功能,如果有一个audioManager而不是销毁新的,并且audioManager只存在一次,所以audiomanager的音频不会产生一个新的audiomanager,所以不会有循环,所以我会听到仅附加一次音频文件。 但是有人可以解释一下“this”是什么,它的用途是什么,并对“static”关键字做同样的事情吗? 感谢您的帮助,克里斯托夫

【问题讨论】:

  • 您是否尝试查找有关 C# 语言的教程?或者阅读有关这些关键字的文档?我觉得通过阅读这些内容可以更好地解释这些内容,而不是在这里真正解释什么,否则我们将有数百个关键字问题。
  • @SamiKuhmonen 有点生硬。我认为标记重复将同样有效
  • @flakes 指示将来在哪里可以找到信息,而不仅仅是欺骗,是生硬和糟糕的吗?下次查看文档会节省大量时间。
  • 我也看过文档和教程,但它们对我来说不太亮

标签: c# unity3d static this


【解决方案1】:

this 是一个 C# 关键字,它是对运行代码的当前实例的引用。

static 意味着这个变量只有一个内存位置,这意味着即使你有这个类的第二个实例,这个变量也会指向相同的支持数据。

一起使用,这就是“单例模式”。有关更多信息,请参阅 here

【讨论】:

  • 我用谷歌也看过教程、文档和stackoverflow cmets,但他们没有让我理解这些哈哈
  • @Kristóf 而不是谷歌搜索,你可以尝试在 youtube 上观看一些关于 c# 的基本教程。只是说。 :)
  • 那么需要找到更好的教程。或者,不要看视频,而是阅读一本好的 c# 书籍。看书经历了什么?我有那么老吗?
  • 为什么要抱怨这个问题?在观看、阅读和尝试 C# 教程时,我从来没有看到过更好、更简洁的区分和定义 this 和 static。它也适用于 OP。没有静态的、有价值的实例能够解决这个困境以及这个单一的实例。并且没有考虑到目标和能力中的哪些混淆和/或矛盾,或者巧合和互补的能力会绊倒任何人。尤其是新学员。我认为 OP 的问得如此清楚也值得称赞。每个人都会在某个地方绊倒。
  • 作为好参考资料的意义的例子,拿这个:stackoverflow.com/questions/572547/…在这种语言中是不一样的。完全没有。但是这个问题真正有趣的是......它是一个静态的,并且结合起来,提供了令人难以置信的力量,我只是有点意识到这个答案。有一些方法可以改进这个问题,现在我看到了 this 和 static 可以一起做什么。它们似乎与 OOP 的任何功能一样强大,但当它们一起使用时,它们会违背它。美丽的。有趣的范式水平。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2011-08-22
相关资源
最近更新 更多