Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Pragma warning 12 страница





Параметр ссылки используется для передачи как входных, так и выходных параметров. Аргумент, передаваемый параметру ссылки, должен являться переменной. Во время выполнения метода параметр ссылки представляет то же место хранения, что и переменная аргумента. Параметр ссылки объявляется с помощью модификатора ref. В следующем примере показано использование параметров с модификатором ref.

using System;

class Test
{
static void Swap(ref int x, ref int y) {
int temp = x;
x = y;
y = temp;
}

static void Main() {
int i = 1, j = 2;
Swap(ref i, ref j);
Console.WriteLine("{0} {1}", i, j); // Результат: "2 1"
}
}

Выходной параметр используется для передачи выходных параметров. Выходной параметр аналогичен параметру ссылки, однако он не учитывает начальное значение аргумента, предоставляемого вызывающим объектом. Выходной параметр объявляется с помощью модификатора out. В следующем примере показано использование параметров с модификатором out.

using System;

class Test
{
static void Divide(int x, int y, out int result, out int remainder) {
result = x / y;
remainder = x % y;
}

static void Main() {
int res, rem;
Divide(10, 3, out res, out rem);
Console.WriteLine("{0} {1}", res, rem); // Результат: "3 1"
}
}

Массив параметров используется для передачи методу переменного числа аргументов. Массив параметров объявляется с помощью модификатора params. В качестве массива параметров может использоваться только последний параметр метода. Массив параметров должен являться одномерным массивом. Методы Write и WriteLine класса System.Console являются примерами массивов параметров. Эти методы объявляются следующим образом.

public class Console
{
public static void Write(string fmt, params object[] args) {...}

public static void WriteLine(string fmt, params object[] args) {...}

...
}

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

Console.WriteLine("x={0} y={1} z={2}", x, y, z);

равнозначен следующей записи:

string s = "x={0} y={1} z={2}";
object[] args = new object[3];
args[0] = x;
args[1] = y;
args[2] = z;
Console.WriteLine(s, args);

1.6.6.2 Тело метода и локальные переменные

В теле метода определяются операторы, выполняемые при его вызове.

В теле метода могут быть объявлены переменные, относящиеся к вызову метода. Такие переменные называются локальными переменными. В объявлении локальной переменной задается имя типа, имя переменной и при необходимости начальное значение. В следующем примере объявляются локальная переменная i с нулевым начальным значением и локальная переменная j без начального значения.

using System;

class Squares
{
static void Main() {
int i = 0;
int j;
while (i < 10) {
j = i * i;
Console.WriteLine("{0} x {0} = {1}", i, j);
i = i + 1;
}
}
}

В C# значение локальной переменной можно использовать только после явного присваивания ей значения. Например, если объявлению i (см. выше) не присвоено начальное значение, при последующем его использовании возникнет ошибка компиляции, поскольку в момент использования переменной i ей явно не присвоено значение.

В методе можно использовать операторы return для передачи управления вызвавшему его объекту. В методе, возвращающем void, операторы return не могут задавать выражение. В методе, возвращающем отличное от void значение, операторы return должны включать выражение, вычисляющее возвращаемое значение.

1.6.6.3 Статические методы и методы экземпляра

Метод, объявленный с использованием модификатора static, называется статическим методом. Статический метод не выполняет операций с конкретным экземпляром и может только напрямую обращаться к статическим членам.

Метод, объявленный без использования модификатора static, называется методом экземпляра. Метод экземпляра выполняет операции только с конкретным экземпляром и может обращаться как к статическим членам, так и к членам экземпляра. Явное обращение к экземпляру, для которого вызывается метод экземпляра, выполняется с помощью зарезервированного слова this. При ссылке на объект this статического метода возникает ошибка.

В следующем примере класс Entity содержит как статические члены, так и члены экземпляра.

class Entity
{
static int nextSerialNo;

int serialNo;

public Entity() {
serialNo = nextSerialNo++;
}

public int GetSerialNo() {
return serialNo;
}

public static int GetNextSerialNo() {
return nextSerialNo;
}

public static void SetNextSerialNo(int value) {
nextSerialNo = value;
}
}

Каждый экземпляр класса Entity содержит серийный номер (и, возможно, другие данные, не показанные в примере). Конструктор класса Entity (аналогичен методу экземпляра) инициализирует новый экземпляр со следующим доступным серийным номером. Поскольку конструктор представляет собой член экземпляра, допускается обращение как к полю экземпляра serialNo, так и к статическому полю nextSerialNo.

Статические методы GetNextSerialNo и SetNextSerialNo могут обращаться к статическому полю nextSerialNo, однако при непосредственном обращении этих методов к полю экземпляра serialNo возникнет ошибка.

В следующем примере показано использование класса Entity.

using System;

class Test
{
static void Main() {
Entity.SetNextSerialNo(1000);

Entity e1 = new Entity();
Entity e2 = new Entity();

Console.WriteLine(e1.GetSerialNo()); // Результат: "1000"
Console.WriteLine(e2.GetSerialNo()); // Результат: "1001"
Console.WriteLine(Entity.GetNextSerialNo()); // Результат: "1002"
}
}

Обратите внимание, что статические методы SetNextSerialNo и GetNextSerialNo вызываются для класса, а метод экземпляра GetSerialNo — для экземпляра класса.

1.6.6.4 Виртуальные, переопределяющие и абстрактные методы

Если объявление метода экземпляра содержит модификатор virtual, метод является виртуальным методом. Если модификатор virtual отсутствует, метод является невиртуальным методом.

При вызове виртуального метода тип времени выполнения экземпляра, для которого осуществляется вызов, определяет фактическую реализацию вызываемого метода. При вызове невиртуального метода определяющим фактором является тип времени компиляции экземпляра.

Виртуальный метод может быть переопределен в производном классе. Если объявление метода экземпляра содержит модификатор override, метод переопределяет унаследованный виртуальный метод с такой же подписью. Объявление виртуального метода определяет новый метод. Объявление переопределяющего метода уточняет существующий виртуальный метод, предоставляя его новую реализацию.







Дата добавления: 0000-00-00; просмотров: 431. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Понятие и структура педагогической техники Педагогическая техника представляет собой важнейший инструмент педагогической технологии, поскольку обеспечивает учителю и воспитателю возможность добиться гармонии между содержанием профессиональной деятельности и ее внешним проявлением...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия