Основы языка C# 2005. Евсеева О.Н - 40 стр.

UptoLike

Составители: 

44
преобразования, а само преобразование выполняется только один раз, – из типа
источника А в тип назначения В.
Иногда возникает ситуация, при которой для одного типа источника
может одновременно существовать несколько типов назначений и необходимо
осуществить выбор цели - типа назначения. Такие проблемы выбора
возникают, например, при работе с перегруженными методами в классах.
Правило выбора реализации при вызове метода таково: выбирается та
реализация, для которой путь преобразований, заданный на диаграмме, короче.
Если есть точное соответствие параметров по типу (путь длины 0), то,
естественно, именно эта реализация и будет выбрана.
Рассмотрим еще один тестовый пример. В класс Testing включена группа
перегруженных методов OLoad с одним и двумя аргументами.
Вот эти методы:
/// <summary>
/// Группа перегруженных методов OLoad
/// с одним или двумя аргументами арифметического типа.
/// Если фактический аргумент один, то будет вызван один из
/// методов, наиболее близко подходящий по типу аргумента.
/// При вызове метода с двумя аргументами возможен
/// конфликт выбора подходящего метода, приводящий
/// к ошибке периода компиляции.
/// </summary>
private void OLoad(float par)
{
Console.WriteLine("float value {0}", par);
}
/// <summary>
/// Перегруженный метод OLoad с одним параметром типа long
/// </summary>
/// <param name="par"></param>
private void OLoad(long par)
{
Console.WriteLine("long value {0}", par);
}
/// <summary>
/// Перегруженный метод OnLoad с одним параметром типа ulong
/// </summary>
/// <param name="par"></param>
private void OLoad(ulong par)
{
Console.WriteLine("ulong value {0}", par);