【问题标题】:Why does C# warn about unused event in generic class?为什么 C# 警告泛型类中未使用的事件?
【发布时间】:2016-01-25 17:00:55
【问题描述】:

使用此代码:

public class Peyton
{
    public event Action Wobble;

    protected void OnWobble()
    {
        Wobble();
    }
}

我没有收到任何警告。但是,如果我将类设为通用:

public class Peyton<T>
{
    public event Action Wobble;

    protected void OnWobble()
    {
        Wobble();
    }
}

我收到一条警告说“从未使用过事件 `Killian.Gameplay.Peyton.Wobble'。”

为什么我会收到此警告?

注意:这是 Unity 5.3 的 Mono 版本,即 Mono 2.6.5

【问题讨论】:

  • 那么这是哪个版本的 Mono 编译器?这很可能是很久以前修复的错误。
  • @JonSkeet -- 嗨,John,首先感谢您所有的 C#(和 F#)写作 -- 从您那里学到了很多东西。这是单声道 2.6.5。
  • 但那是 compiler 版本 (mcs) 吗?看起来 Mono 2.6.5 本身是在 2010 年中的某个时候发布的,所以如果在过去 5 1/2 年内修复了错误,我不会感到惊讶......
  • Unity 与名为 gmcs 的东西捆绑在一起,带有 --version 标志的输出如下:“Mono C# 编译器版本 2.6.5.0” 不是很有帮助...是的,Unity (非常)落后于最新的单声道是一个持续的痛苦来源。无论如何,很高兴知道我并没有失去理智,而且这个警告似乎不正确。
  • 对,所以它确实也是编译器的那个版本。对不起 - 我想你只需要忽略它。 (您可以使用#pragma...)

标签: c# unity3d mono


【解决方案1】:

根据this,Unity 提供了自己的自定义框架,即使有系统安装了 Mono。即使它使用最新的编译器,由于引擎的工作方式,它也覆盖了很多 C# 功能,包括equality operator。可能是 Unity Mono 导致了您的问题。

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多