コンパイラ エラー CS0188

更新 : 2007 年 11 月

エラー メッセージ

すべてのフィールドが割り当てられるまでは、'this' オブジェクトは使用できません。

struct では、コンストラクタがメソッドを呼び出す前に、コンストラクタによって struct 内のすべてのフィールドに値が代入されている必要があります。

struct コンストラクタでプロパティを初期化しようとしたときにこのエラーが表示された場合は、プロパティ自体ではなくバッキング フィールドを指定するようにコンストラクタ パラメータを変更します。自動実装するプロパティにはバッキング フィールドがないため、どのような方法でもコンストラクタから初期化できないので、struct での使用を避ける必要があります。

詳細については、「構造体の使用 (C# プログラミング ガイド)」を参照してください。

使用例

次の例では CS0188 エラーが生成されます。

// CS0188.cs
// compile with: /t:library
namespace MyNamespace
{
    class MyClass
    {
        struct S
        {
            public int a;

            void Foo()
            {
            }

            S(int i)
            {
                // a = i;
                Foo();  // CS0188
            }
        }
        public static void Main()
        { }

    }
}

参照

参照

構造体 (C# プログラミング ガイド)

自動実装するプロパティ (C# プログラミング ガイド)