2012-05-30 2 views
0

Я новичок в C#. Я хотел бы проверить некоторое условие в параметре функции.Состояние в функции параметр

Мне нужно написать функцию, которая по своему параметру будет проверять, какие числа больше нуля и вернуть эти числа. Как его решить?

Я пробовал по-разному, но никто не работает.

Ниже приведен код, у меня есть:

int[] arr = new int[] {2, 3, -5};

+6

ОК, давайте начнем с самого начала - что у вас есть? Что вы пробовали? Как числа передаются функции? – slugster

+0

int [] arr = new int [] {2, 3, -5}; – paul

+1

+1, немного суровый по новому парню ... приходите на ppl -4 голосов? все, что ему не хватает, это какой-то код и способность четко выражать свой вопрос. – Joe

ответ

1
List<int> returnGreaterThanZero(int[] numbers) 
    { 
     List<int> greaterList = new List<int>(); 
     foreach (int oneNum in numbers) 
     { 
      if (oneNum > 0) 
       greaterList.Add(oneNum); 
     } 

     return greaterList; 

     // return greaterList.ToArray(); // if you want to return int[] instead of List<int> 
    } 

Конечно, вы можете использовать LINQ вместо Еогеасп тоже.

+0

ОК, это пример кода: int [] nums = new int [] {2, 3, -5, 0, -2, 1}; var result = from num in nums где num> 0 select num; И теперь, как изменить выше код на использование условия (проверка, если число> 0) в параметре функции. Например: частный список GreaterThanZero (п => (п> 0)) { возвращение ... } Я думаю, делегат может быть хорошим, но я не знаю, как ее решить. – paul

+0

Так что returnGreaterThanZero (int [] numbers) не очень хорошо, потому что я должен иметь условие в параметре функции, например. : GreaterThanZero (n => n> 0) {...} – paul

+0

Я получил то, о чем вы сейчас думаете, но я не думаю, что это возможно в C#. Если вам нужно какое-то предупреждение, если agrument содержит ниже 0 чисел - вы можете добавить в состояние foreach 'else' часть и вызвать какое-то исключение (например,« throw new ArgumentException (...) »). – Joe

1

На верхней

using System.Linq; 

В коде

int[] arr = new int[] { 2, 3, -5 }; 
var result = arr.Where(x => x > 0).ToList(); 

Это, как вы делаете это с помощью LINQ.

Если вы хотите больше, чем любое число, вы можете сделать Where(x=>x > someNumber) и передать someNumber в качестве параметра в другом месте.

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