2016-12-14 8 views
0

ここで何度も議論されていることは知っていますが、変数をpublicなどに設定しようとしましたが、他の名前空間で変数を使用できないようです。あなたは私にいくつかのヒントを与えることができれば、私は私が私の他の名前空間からのアクセスをしようとしている 文字列は「stringatlinei」である(私はC#のでnoobのだ)別の名前空間で変数にアクセスするC#

using System; 
using System.Diagnostics; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Security; 
using System.Security.Cryptography; 
using System.IO; 
using System.Net; 
using Microsoft.Win32; 
using System.Runtime.InteropServices; 
using System.Text.RegularExpressions; 
using System.Net.Mail; 
using ConsoleApplication32; 





namespace ConsoleApplication32 

{ 
public class Program 
{ 




    static void Main(string[] args) 
    { 
     DirSearch(@"C:\\Users\\"); 
     Console.ReadKey(); 
    } 





    static void DirSearch(string dir) 
    { 
     try 
     { 

      foreach (string d in Directory.GetDirectories(dir)) 
      { 
       Console.WriteLine(d); 

       DirSearch(d); 

       // Compose a string that consists of three lines. 
       string lines = d; 

       // Write the string to a file. 
       System.IO.StreamWriter file = new   
       System.IO.StreamWriter("c:\\users\\chris\\desktop\\test.txt", true); 
       file.WriteLine(lines); 

       file.Close(); 

       var oldLines = System.IO.File.ReadAllLines("c:\\users\\chris\\desktop\\test.txt"); 
       var newLines = oldLines.Where(line => !line.Contains("Windows")); 
       System.IO.File.WriteAllLines("c:\\users\\chris\\desktop\\test.txt", newLines); 

       var oldLines4 = System.IO.File.ReadAllLines("c:\\users\\chris\\desktop\\test.txt"); 
       var newLines4 = oldLines.Where(line => !line.Contains("$Recycle.Bin")); 
       System.IO.File.WriteAllLines("c:\\users\\chris\\desktop\\test.txt", newLines4); 

       var oldLines7 = System.IO.File.ReadAllLines("c:\\users\\chris\\desktop\\test.txt"); 
       var newLines7 = oldLines.Where(line => !line.Contains("Program Files")); 
       System.IO.File.WriteAllLines("c:\\users\\chris\\desktop\\test.txt", newLines7); 

       var oldLines8 = System.IO.File.ReadAllLines("c:\\users\\chris\\desktop\\test.txt"); 
       var newLines8 = oldLines.Where(line => !line.Contains("Program Files (x86)")); 
       System.IO.File.WriteAllLines("c:\\users\\chris\\desktop\\test.txt", newLines8); 

       var oldLines9 = System.IO.File.ReadAllLines("c:\\users\\chris\\desktop\\test.txt"); 
       var newLines9 = oldLines.Where(line => !line.Contains("AppData")); 
       System.IO.File.WriteAllLines("c:\\users\\chris\\desktop\\test.txt", newLines9); 













      } 

     } 
     catch (System.Exception ex) 
     { 
      Console.WriteLine(ex.Message); 


     } 



     var lineCount = File.ReadLines(@"c:\\users\\chris\\desktop\\test.txt").Count(); 
     Console.WriteLine(lineCount); 
     Console.ReadLine(); 
     int element = 0; 

     for (int i = 0; i < lineCount + 1; i++) 

     { 

      element = element + 1; 
      String stringAtLinei = File.ReadLines("c:\\users\\chris\\desktop\\test.txt").ElementAtOrDefault(element); 
      Console.WriteLine(stringAtLinei); 

     } 




     System.Diagnostics.Process process = new System.Diagnostics.Process(); 
     System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
     startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     startInfo.FileName = "cmd.exe"; 
     startInfo.Arguments = "random command example thing"; 
     process.StartInfo = startInfo; 
     process.Start(); 





     } 
    } 
} 

その後、他の名前空間などをいただければと思います

答えて

0

"stringatlinei"はプロパティではなく、パブリックなものではなく、関数内のループ内で定義されています。

パブリック静的文字列stringatlinei = ""を試してから、ループに割り当ててください。

0

別の名前空間でその変数にアクセスすることはできません。これがなぜそうであるかを理解するためには、基本的な範囲(特に、範囲)を読み上げるべきです。役に立つ記事は次のとおりです。https://msdn.microsoft.com/en-us/library/aa691132(v=vs.71).aspx

基本的には、アクセスしようとしている変数はforループ内に作成されています。あなたのループの各繰り返し、それは遠ざかります。

0

ここでは、変更すべき部分です。(私はわかりやすくするために、残りを削除)

namespace ConsoleApplication32 
{ 
    public class Program 
    { 
     public String stringAtLinei; 

     static void DirSearch(string dir) 
     { 
      for (int i = 0; i < lineCount + 1; i++) 
      { 
        stringAtLinei = File.ReadLines("c:\\users\\chris\\desktop\\test.txt").ElementAtOrDefault(element); 

      } 
     } 
    } 
} 

ポイントは、あなたが方法彼らに限定されている変数のフィールドとクラスのプロパティにアクセスすることはできませんが、ということです変数をクラスのフィールドに変更しました。

+0

私はコンピュータとビジュアルスタジオにアクセスできるようになりました。私はあきらめようとしていた –

関連する問題