7

簡単なテストケース:

using System;

public class Test<T>
{
    public enum TestEnum
    {
        A,
        B
    }
    public Test (TestEnum a = TestEnum.A)
    {
        DoSomething ();
    }

    protected void DoSomething()
    {
    }
}

コンパイラ (これは Unity3D プロジェクト、.NET4.0 ターゲットで Mono を使用しています) の呼び出しでエラーが発生しTest()ますDoSomething()。のデフォルト パラメータを削除すると、正常にTestEnum aビルドされます。MonoDevelop はデフォルトのパラメーターを呼び出したいと思っていますTestEnum<>.Aが、それはコンパイルされず、どちらもコンパイルされませんTestEnum<T>.A(明らかに、これらが機能するとは思っていませんでしたが、MonoDevelop のオートコンプリートを使用すると、それが得られます)。

編集: 特定のエラーは次のとおりです。the name DoSomething doesn't exists in the current context

4

1 に答える 1

1

コメントで述べたように、これはコンパイラのバグです。

Mono 開発環境では、protected キーワードがあまり好きではないようです。

今のところ {public,private} を使用してください。

于 2012-08-24T05:41:20.633 に答える