Сейчас на сайте:
Пользователей: 0
Отсутствуют.
Роботов: 2
Googlebot, Yandex
Гостей: 73
Всех: 75
ВНИМАНИЕ! Конкурс по программированию!
Проект Programmers.kz и школа hotPen3D2D предлагает Вам курсы по веб-дизайну, веб-программированию и компьютерной графике. Подробности здесь.
Информация к новости
- Просмотров: 1162
- Автор: КазКиберГетик
Урок 30. Перегрузка
Категория: Программирование » C# » Уроки C#
При перегрузке мы имеем в одной области видимости два или более одноименных метода. Для того, чтобы при компиляции не было ошибок, эти методы должны различаться или типом параметров, или их количеством (или и тем и другим).
Вот пример:
using System;
namespace test
{
class SomeClass{
//Первый метод SomeFunc.
public static int SomeFunc()
{
return 0;
}
//Второй метод SomeFunc.
public static int SomeFunc(int k)
{
return k*k;
}
//Третий метод SomeFunc.
public static float SomeFunc(float k)
{
return k;
}
}
class Test
{
static void Main(string[] args)
{
Console.WriteLine(SomeClass.SomeFunc());
Console.WriteLine(SomeClass.SomeFunc(10));
Console.WriteLine(SomeClass.SomeFunc((float)10));
}
}
}
Результатом выполнения прораммы будет 0 100 10.
Тут в классе SomeClass мы имеет три метода с одним названием – SomeFunc. Для простоты мы сделали все методы статическими, но это не важно. Наши методы различаются количеством параметров и типом. В тестовом классе Test мы вызываем эти методы. Обратите внимание на подсказку редактора – при написании метода SomeFunc возникает желтенькое окошко в котором написано “1 of 3″ (т. е. первый метод из трех).
Если нажимать стрелочки вверх-вниз на клавиатуре, то появятся подсказки и по другим двум методам.
Обратите внимание на два момента. Во-первых, методы не могут различаться только типом возвращаемого значения – они должны различаться именно по параметрам. Например, такой метод добавить в класс SomeClass нельзя:
public static bool SomeFunc()
{
return true;
}
{
return true;
}
Во-вторых, в вызове третьего метода мы использовали приведение типов:
...
Console.WriteLine(SomeClass.SomeFunc((float)10));
...
Console.WriteLine(SomeClass.SomeFunc((float)10));
...
Если бы мы вызвали метод без слова float, то вызвался бы перегруженный вариант для целых чисел.
Вернуться
Комментариев: 0
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




