[C#] 非static member のコンパイルエラー

program classのdynamicなメンバーにMain methodの中でアクセスするとコンパイルエラーになる。
これは、staticなメソッドの中で、自分が定義されているclassの非staticなdataやmethodを使っているから。
Mainがpublic staticだからである。
Visual Studioでコンパイルすると以下のようなメッセージでエラーになる。

Program.cs(19,13): エラー CS0120: 静的でないフィールド、メソッド、またはプロパティ ‘XXXXXXXXXXXX’ で、オブジェクト参照が必要です

素人なサンプルでナニだが、こういうときにサンプルを書きとめておかないとまた同じ失敗ではまることに。ここでtesttypeがstaticではないためコンパイルエラーになる
Program classはMainを起動したらそのあとは、他のclassに制御を移すべきなのだな。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
       public mytype testtype = new mytype(50,100);
       static void Main(string[] args)
       {
            Console.WriteLine("age {0} salary {1}", testtype.age, testtype.salary);
            Console.ReadLine();
       }
    }
    public class mytype
    {
         public mytype(int a, int s)
         { 
              age = a;
              salary = s;
         }
         public int age {get; set;}
         public int salary {get; set;}
    } 
}
広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。