// Передача в виде списка значений, разделенных запятыми,.…
double average;
average = CalculateAverage(4.0, 3.2, 5.7);
Console.WriteLine("Среднее 4.0, 3.2, 5.7 равно: {0}", average);
//… или передача в виде массива значений.
double[] data = {4.0, 3.2, 5.7};
average = CalculateAverage(data);
Console.WriteLine ("Среднее равно: {0}", average);
Console.ReadLine;
}
Это завершает наше вводное обсуждение модификаторов параметров. Мы снова обратимся к этой теме немного позже (в этой же главе), когда будем обсуждать различия между типами значений и ссылочными типами. А пока что давайте рассмотрим итерационные и условные конструкции языка программирования C#.
Исходный код. Проект SimpleParams размещен в подкаталоге, соответствующем главе 3.
Итерационные конструкции
Все языки программирования предлагают конструкции обеспечивающие возможность повторения блоков программного кода, пока не выполнено условие завершения повторений. Если у вас есть опыт программирования, то операторы цикла в C# будут для вас понятными и не должны требовать пространных объяснений.
В C# обеспечиваются следующие четыре итерационные конструкции:
• цикл for;
• цикл foreach/in;
• цикл while;
• цикл do
Давайте рассмотрим все указанные конструкции по очереди.
Цикл for
Когда требуется повторить блок программного кода определенное число раз, оператор for подходит для этого лучше всего. Вы можете указать, сколько раз должен повториться блок программного кода, а также условие окончания цикла. Без лишних объяснений, вот вам соответствующий образец синтаксиса.
// База для цикла.
static void Main(string[] args) {
for(int i = 0; i ‹ 10; i++) {
Console.WriteLine("Значение переменной: {0} ", i);
}
// Здесь переменная 'i' недоступна.
}
Все ваши привычные приемы использования циклов C, C++ и Java применимы и при построении операторов for в C#. Вы можете создавать сложные условия окончания цикла, строить бесконечные циклы, а также использовать ключевые слова goto, continue и break. Я думаю, что эта итерационная конструкция будет вам понятна. Если же вам требуются дальнейшие объяснения по поводу ключевого слова fоr в C#, используйте документацию .NET Framework 2.0 SDK.
Цикл foreach
Ключевое слово C# foreach позволяет повторить определенные действия для всех элементов массива без необходимости выяснения размеров массива. Вот два примера использования foreach, один для массива строк, а другой – для массива целых, чисел.
// Прохождение массива с помощью foreach.
static void Main(string[] args) {
string[] books = {"Сложные алгоритмы", "Классическая технология COM", "Язык C# и платформа .NET"};
foreach(string s in books) Console.WriteLine(s);
int[] myInts = {10, 20
foreach(int i in myInts) Console
}
В дополнение к случаю простых массивов, foreach можно использовать и для просмотра системных и пользовательских коллекций. Обсуждение соответствующих подробностей предполагается в главе 7, поскольку этот вариант применения ключевого слова foreach предполагает понимание интерфейсного программирования и роли интерфейсов IEnumerator и IEnumerable.
Конструкции while и do/while
Цикл while оказывается полезным тогда, когда блок операторов должен выполняться до тех пор, пока не будет достигнуто заданное условие. Конечно, при этом требуется, чтобы в области видимости цикла while было определено условие окончания цикла, иначе вы получите бесконечный цикл. В следующем примере сообщение "в цикле while" будет печататься до тех пор, пока пользователь не введет значение "да" в командной строке.
static void Main(string[] args) {
string userIsDone = "нет";
// Проверка на соответствие строке в нижнем регистре.
while(userIsDone.ToLower != "да") {
Console.Write("Вы удовлетворены? [да] [нет]: ");
userIsDone = Console.ReadLine;
Console.WriteLine{"В цикле while");
}