ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者の為のC#コミュの[質問]staticなメソッド

  • mixiチェック
  • このエントリーをはてなブックマークに追加
すみません。このコンパイルエラーって
どのように対処すればいいのでしょうか?
メソッドに配列の参照を渡して
その配列の要素の値を出力したいのですが・・・

---------------------------------------------------
エラー 1
静的でないフィールド、メソッド、またはプロパティ
'CostomArray.CostomArrayData.PrintArrayData(int[])' で、
オブジェクト参照が必要です。
---------------------------------------------------
using System;

namespace CostomArray
{
  public class CostomArrayData
  {
    public void PrintArrayData(int [] lst)
    {
      foreach(int i in lst) {
        Console.Write("{0} ", i);
      }
      Console.WriteLine();
    }

    public static void Main()
    {
      int [] lst = new int[10];

      for (int i = 0; i < lst.Length; i++) {
        lst[i] = i * i;
      }
      PrintArrayData(lst);
    }
  }
}

コメント(5)

static メソッド内から、インスタンスメソッドを
呼び出しているからですね。

static void Main
の中で、CostomArrayData クラスのインスタンスを
生成して、そのインスタンスからアクセスしないとですね。
プログラミングC# オライリージャパン p81

staticメソッドの呼び出し
Mian()メソッドはstaticです。staticメソッドはクラスのインスタンスではなく、クラスの上で動作します。そのためthisは使えません。参照すべきインスタンスがないからです。
staticメソッドから、そのクラスのstaticでないメンバへ直接アクセスすることはできません。Main()から非staticメソッドを呼び出すためには、オブジェクトを作成する必要があります。
SampleSource1.はOKで
SampleSource2.は駄目なんですね。
へーって感じだけど、理由がわかればなるほどねーって感じです。

----------------------------------------------------------------------
// SampleSource1.
using System;

namespace CallingAMethod
{
  class CallingAMethod
  {
    static void Main()
    {
      Console.WriteLine("Main()中でSomeMethod()を呼び出します...");
      SomeMethod();
      Console.WriteLine("Main()に戻りました。");
    }
    static void SomeMethod()
    {
      Console.WriteLine("SomeMethodからこんちには。");
    }
  }
}

----------------------------------------------------------------------
// SampleSource2.
using System;

namespace CallingAMethod
{
  class CallingAMethod
  {
    static void Main()
    {
      Console.WriteLine("Main()中でSomeMethod()を呼び出します...");
      SomeMethod();
      Console.WriteLine("Main()に戻りました。");
    }
    void SomeMethod()
    {
      Console.WriteLine("SomeMethodからこんちには。");
    }
  }
}

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者の為のC# 更新情報

初心者の為のC#のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング