2013-03-23 5 views
-3

Я столкнулся с этим вопросом в интервью, как показано ниже?IEnumerable <string> Функция C# .net

давайте рассмотрим строку с именем

string gowtham="test1,test2,test3" ; 

мне нужно преобразовать, чтобы IEnumerable строчной функции

я нужен выход, чтобы быть в

new[] {"test1", "test2","test3" } 

, что я сделал это Я создал функцию string(), разделив значения на запятую, разделенные как ниже

string[] mysamples= gowtham.Split(','); 

я не знаю, как поступить после

ждет ваших ответов?

+2

Я не вижу функцию, которую вы создали. И я не совсем понимаю вашу проблему. – wRAR

+2

Вы преобразовали * строку * в * массив строк *. Это данные, а не функции. И в результате ваш объект 'mysamples' имеет тип' string [] ', который реализует желаемый интерфейс' IEnumerable '. – Impworks

+3

Я не думаю, что есть что добавить: массивы реализуют 'IEnumerable ', поэтому 'mysamples' * is * уже есть' IEnumerable '. Просто заверните его в метод с возвращаемым значением 'IEnumerable ', и все готово. – LukeH

ответ

-1

Если я четко понимаю ваш вопрос, вы можете использовать такой метод;

public static IEnumerable<string> YourMethod() 
{ 
    string gowtham = "test1,test2,test3"; 
    string[] mysamples = gowtham.Split(','); 
    List<string> senum = new List<string>(); 

    foreach (string s in mysamples) 
    { 
     senum.Add(s); 
    } 

    return senum as IEnumerable<string>; 
} 

С string[] реализует IEnumerable<T> интерфейс, кажется, вам просто нужно, чтобы бросить его как IEnumerable<T>

EDIT: С Магнуса и LukeH предупреждала меня, есть простой способ также то, что вам хотеть сделать.

public static IEnumerable<string> YourMethod() 
{ 
    string gowtham = "test1,test2,test3"; 
    return gowtham .Split(','); 
} 
+1

Это кажется ненужным как '" test1, test2, test3 ".Split (','). AsEnumerable()' будет делать. – Magnus

+2

@Magnus: вам даже не нужен вызов 'AsEnumerable': если метод вводится как' IEnumerable ', тогда просто' return 'test1, test2, test3 ".Split (', ');' будет делать трюк , – LukeH

+0

@Magnus Вы совершенно правы. Я просто написал это, потому что мне кажется более простым, понятным и понятным .. –

3

Каждый массив уже IEnumerable, в вашем случае, если вы хотите явного приведения к одному IEnumerable строки можно использовать

IEnumerable<string> mysamplesEnumerable = mysamples as IEnumerable<string> 

если вы интервьюер хотел функцию, которая сделала это, вы могли бы сделать

IEnumerable<string> SplitEnumByComa(string input) 
    { 
      return input.Split(','); 
    } 
+0

OP может быть смущен отсутствием IntelliSense, если отсутствует 'using system.LINQ'. Я помню, что это смутило меня, когда я впервые изучил C#. –