2017-05-01 8 views
-2

コードを記述しようとしていますが、行ごとに.txtファイルから読み取ることが含まれています。しかし、私は 'オブジェクト参照が必要です'エラーを取得し続けます。私はファイルを読むだけで、非常に多くの問題を引き起こす可能性はありますが、それはありません。ここに私のコードは(ちょうど開始前にコメントアウトビットを無視する)である:Visual Studioでファイルを読み取ることができません

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Text.RegularExpressions; 
//(Program) 
namespace FileReader 
{ 
class ReadFromFile 
{ 
    public void IsValidLine(string text) 
    { 
     Regex rgx = new Regex(@"^([A-Za-z]{1,5})((\s\d){0,9})(\s*)$"); 
     if (rgx.IsMatch(text) == false) 
     { 
      Console.WriteLine("Invalid Format"); 
     } 

    } 
    static void Main() 
    { 
     System.IO.StreamReader file = new 
System.IO.StreamReader(@"C:\Users\Public\TestFolder\WriteLines2.txt"); 
     { 
      int counter = 0; 
      string line; 
      List<string> lines = new List<string>(); 


      while ((line = file.ReadLine()) != null) 
      { 
       //HERE IS THE ERROR 
       IsValidLine(line); 
       lines.Add(line); 
       counter++; 
      } 
     } 
    } 
} 
+1

'public void IsValidLine(文字列テキスト)'を 'public static void IsValidLine(文字列テキスト)'に変更します。 'static'キーワードがないときに' IsValidLine'メソッドを使うには 'ReadFromFile'クラスのインスタンスが必要です。だから静的なキーワードを追加するだけで、私はちょうど後で言ったの詳細を把握することができます。 – Quantic

+0

ありがとう、私はそれをします。 –

答えて

0

問題は、静的コンテキストで非静的クラスにアクセスすることをである - ので、あなたは、そのクラスのオブジェクトへの参照を必要としていました。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Text.RegularExpressions; 
//(Program) 
namespace FileReader 
{ 
class ReadFromFile 
{ 
    public static void IsValidLine(string text) 
    { 
     Regex rgx = new Regex(@"^([A-Za-z]{1,5})((\s\d){0,9})(\s*)$"); 
     if (rgx.IsMatch(text) == false) 
     { 
      Console.WriteLine("Invalid Format"); 
     } 

    } 
    static void Main() 
    { 
     System.IO.StreamReader file = new 
System.IO.StreamReader(@"C:\Users\Public\TestFolder\WriteLines2.txt"); 
     { 
      int counter = 0; 
      string line; 
      List<string> lines = new List<string>(); 


      while ((line = file.ReadLine()) != null) 
      { 
       //HERE IS THE ERROR 
       IsValidLine(line); 
       lines.Add(line); 
       counter++; 
      } 
     } 
    } 
} 

私もクラスの静的を作成することをお勧めしたいこのようなエラーを回避するには:

static class ReadFromFile 
//... 

をその後のコードはコンパイルされませんので、あなたがしなければならないすべては、メソッドが静的にすることです何かがクラス内で静的でない場合。

+0

@GeorgeBouverieこれで問題は解決しましたか?そうした場合、有効な回答としてマークすることを忘れないでください。これは、あなたとより広いコミュニティが解決された問題を特定するのに役立ちます。 – MetaColon

関連する問題