2016-02-25 2 views
0

Я пытаюсь вернуть массив строк stringArray совпадений регулярных выражений вместе с ассоциированным совпадением match_countstring_index и match_length. Как отправить несколько разных значений разных типов данных в метод return. Я читал об Tuple Но все примеры в основном показывают несколько значений, но они всегда кажутся целыми и не смешанными типами. Я не могу решить, как реализовать массив строк и целые числа в моем примере, используя его.Метод, возвращающий несколько значений разных типов данных

string ptrn_coords = @"- Coordinates: \[ ([\-0-9]+), ([\-0-9]+), ([\-0-9]+) \]"; 

    private void button3_Click(object sender, EventArgs e) 
    { 
     string[] matches; 
     matches = GetMatches(s, ptrn_coords); 
    } 



    private static string[] GetMatches(string input, string pattern) 
    { 

     string[] stringArray; 
     Match mc = Regex.Match(input, pattern); 

     int string_index = 0; 
     int match_length = 0; 
     int match_count = 0; 
     List<String> listTemp = new List<string>(); 
     while (mc.Success) 
     { 
      match_count++; 
      string_index = mc.Index; 
      match_length = mc.Length;    
      listTemp.Add(mc.ToString()); 

      //MessageBox.Show("Match Text: " + mc.ToString() + " Index: " + string_index + " Length: " + match_length + " Count: " + match_count); // Test Message 

      mc = mc.NextMatch(); 
     } 
     stringArray = listTemp.ToArray<String>(); 
     return stringArray; 

    } 
+0

Действительно не может понять, кто голосует. Похоже на ясный вопрос –

ответ

2

Наборы типа безопасны и могут безопасно возвращать смеси примитивных и сложных типов. Вот пример:

void Main() 
{ 
    var x = GetTuple(); 
    Console.WriteLine($"{x.Item1} {x.Item2} {x.Item3.GetType().Name}"); // Prints "string 5 MyClass" 
} 

.... 

public Tuple<string, int, MyClass> GetTuple() 
{ 
    string myString = "string"; 
    int myInt = 5; 
    MyClass myClass = new MyClass(); 
    return Tuple.Create(myString,myInt,myClass); 
} 
+0

Спасибо за пример. Получение возвращаемого значения - это то, где всегда казалось, что он сломался. Это сделало его очень кратким. Спасибо, много помогли. –

+0

Удивительно, я рад, что это помогло. Обязательно отметьте один из ответов как принятый, если он удовлетворит ваш вопрос, чтобы помочь другим в будущем. –

2

Не уверен, что вы хотите, чтобы вернуться, если вы хотите вернуть StringArray и то MatchCount и т.д. Вы можете просто определить класс с этими свойствами, то возвращает экземпляр этого класса.

Смежные вопросы