2016-11-07 3 views
0

Я читаю файл в списке, а затем хочу, чтобы кнопка вытащила случайную запись из списка. Я могу сделать это в VB, но довольно новичок в C#. Я знаю, что должен опубликовать этот список, но я все больше расстраиваюсь. Код ниже читает файл в списке, а затем в списке., используя список различных методов в C#

namespace texttoarray 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      int counter = 0; 
      string line; 
      var list = new List<string>(); 
      var file = new StreamReader(@"list.txt"); 
      while ((line = file.ReadLine()) != null) 
      { 
       list.Add(line); 
       counter++; 
      } 

      listBox2.DataSource = list; 

      var rnd = new Random(); 
     } 
    } 
} 
+2

В чем проблема? Любые сообщения об исключениях? – Udontknow

+0

Не могли бы вы объяснить больше, что вы хотите сделать? – staticvoidmain

+1

call [code] int index = rnd.NextInt (0, list.count-1); [code] и использовать возвращаемый номер в качестве индекса для получения записи из вашего списка с [code] list [index]; [code] , –

ответ

0

Если вы хотите обработать информацию внутри одного метода и использовать эту обработанную информацию внутри другого метода, вы можете:

  • передают информацию в качестве аргумента второго метода
  • держать информацию внутри вашего класса и использовать ее внутри любого метода

Я возьму на себя второй подход для вас, так что вы можете сделать что-то вроде этого:

static class Program 
{ 
    // list inside your class with the information you need 
    private static List<string> fileLines; 

    private static void Main(string[] args) 
    { 
     // call the method to read your file and create the list 
     FirstMethod(); 

     // second method to get a random line, in this case, will return the string 
     var result = SecondMethod(); 

     Console.WriteLine(result); 
     Console.ReadLine(); 
    } 

    private static void FirstMethod() 
    { 
     // with this approach you can load one line per string inside your List<> 
     var yourFile = File.ReadAllLines("C:\\test.txt"); 
     fileLines = new List<string>(yourFile); 
    } 

    private static string SecondMethod() 
    { 
     // random number starting with 0 and maximum to your list size 
     var rnd = new Random(); 
     return fileLines[rnd.Next(0, fileLines.Count)]; 
    } 
} 
Смежные вопросы