* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Параметры
7 февраля 2009
Метод может иметь один или несколько параметров. Параметр — это аргумент, пе- редаваемый методу другим методом, который его вызывает. При объявлении мето- да список параметров указывают после его имени в круглых скобках, при этом для каждого параметра необходимо указать его тип. Вот пример метода с параметрами: Visual Basic .NET
Public Sub DisplayName (ByVal name As String, ByVal age As Byte) Console.WriteLine ("Hello " & name & ". You are " & _ age.ToString & " years old.") End Sub Visual C# public void DisplayName (string name, byte age) Console.WriteLine ("Hello " + name + ". You are " + age.ToString () + "years old."); У этого метода два параметра: один типа String, с локальным именем пате, а вто- рой, age, — типа Byte. Их область видимости ограничена методом, вне которого пе- ременные не доступны. Подробнее об области видимости — на занятии 5. Есть два способа передачи параметров — по значению и по ссылке. По умолчанию в .NET Framework параметры передаются по значению. Это означает, что когда пе- ременная передается как параметр, создается новая переменная того же типа, в которую копируется значение исходной переменной. Вызываемому методу переда- ется новая переменная, поэтому никакие изменения, вносимые методом в пере- данное ему значение, не затрагивают исходную переменную. Хотя этот способ пе- редачи параметров принят по умолчанию, в Visual Basic .NET разрешается явно указать его при помощи ключевого слова ByVal. Если параметр передают по ссылке, то вместо значения переменной методу пе- редается ссылка на область памяти, в которой оно хранится. Если вызванный ме- тод изменит значение, переданное ему как параметр, фактически он изменит зна- чение исходной переменной. Чтобы указать, что параметр передается по ссылке, в Visual Basic .NET применяют ключевое слово ByRef, а в Visual C# — ref. Далее пока- заны примеры передачи параметров по ссылке и по значению: Visual Basic .NET Public Sub Demol () Dim x, у As Integer x = 15 у = 20 1 Вызвать метод Oemo2, объявленный ниже. Derno2 (x, у) Каковы значения х и у? MessageBox.Show ("X = " & x.ToString & "Y = " & y.ToString) End Sub Public Sub Demo2 (ByVal p1 As Integer, ByRef p2 As Integer) p1 = p1 + p2 p2 = p2 + p1 End Sub Visual C# public void Demol (J { int x,y; x = 15; У = 20; // Вызвать метод Demo2, объявленный ниже. Demo2 {x,ref у); // Каковы значения х и у? System.Windows.Forms.MessageBox.Show ("X = " + x.ToString () + "Y = " + y.ToString ()); \ public void Oemo2 (int p1, ref int p2) ! р1 = р1 + р2; р2 = р2 + р1; I Здесь создаются две переменные — х и у, которым присваиваются начальные значения. После этого они передаются другому методу в качестве параметров, при- чем х передается по значению, а у — по ссылке. В вызванном методе х и у представ- лены соответственно переменными р! и р2. Поскольку параметр р! передан по зна- чению, это просто копия переменной х, и все действия, выполняемые над pi, ни- как не влияют на значение переменной х. После завершения метода Demo2 пере- менная р! выходит из области видимости, а занятая ею память освобождается. Ина- че обстоит дело с параметром р2: в нем нет, собственно, значения — только ссылка на область памяти, в которой хранится значение переменной у, поэтому при вы- полнении команды р2 =р2 + р! изменяется значение, на которое указывает р2. Та- ким образом, после завершения метода Demolзначение хне меняется (15), а значе- ние у станет равно 55. Заметьте, что для параметра ссылочного типа не имеет значения, как он переда- ется — по ссылке или по значению, результат окажется одним и тем же. В обоих случаях все действия, выполненные над параметром, отразятся на объекте, кото- рый был передан в качестве параметра. Выходные параметры В Visual C# допускается применение выходных параметров, отсутствующих в Visual Basic .NET. Выходной параметр — это тот, который вызванный метод передает (воз- вращает) вызвавшему его методу. Выходные параметры удобно использовать в ме- тодах, которые должны возвращать несколько значений. Выходные параметры обозначаются ключевым словом out, всегда передаются по ссылке и не требуют инициализации перед использованием. Вот пример использо- вания выходных параметров: Visual C# public void aWord (out string Word) ! Word = "Mambo"; } public void ShowWord () { string Word; aWord (out Word); Console.Writeline ("The word of the day is " + Word); } Здесь метод ShowWord вызывает метод aWord, у которого есть один выходной параметр Word. Присваивая значение выходному параметру Word, метод сИ^ог^тем самым устанавливает значение переменной Word метода ShowWord. Необязательные параметры В Visual Basic .NET у метода могут быть необязательные параметры, а в Visual C# это не допускается. Необязательные параметры обозначаются ключевым словом Optional и замыкают список параметров в объявлении метода. Кроме того, для нео- бязательных параметров необходимо определить значения по умолчанию. Вот при- мер, иллюстрирующий использование необязательных параметров: Visual Basic .NET Public Sub Cook (ByVal time as Integer, Optional ByVal temp As Integer = 350) 1 Сюда помещают реализацию метода End Sub