Re[2]: [C#, этюд] overload resolution
От: nikov США http://www.linkedin.com/in/nikov
Дата: 05.10.09 13:56
Оценка: 18 (2)
Здравствуйте, Пельмешко, Вы писали:

П>Здравствуйте, pt4h, Вы писали:

П>Кажется будет:
П>
П>3 // generic-метод (3ий) более подходящий чем второй, так как не требует implicit-каста аргумента из int
П>1 // тут аналогично, но с тремя аргументами
П>1 // а тут просто кажется :D
П>


Последняя строка будет "2". Сработает первое из tie-breaking rules (7.4.3.2 Better function member):

• If MP is a non-generic method and MQ is a generic method, then MP is better than MQ.

[C#, этюд] overload resolution
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 25.09.09 14:51
Оценка: 12 (1)
Небольшой этюд получился. Что будет напечатано?

              class Program
              {
                     static void M<T>(T x, T t = default(T), params T[] args)
                     {
                           Console.WriteLine("1");
                     }

                     static void M(params long[] args)
                     {
                           Console.WriteLine("2");
                     }

                     static void M<T>(T x)
                     {
                           Console.WriteLine("3");
                     }
 
                     static void Main(string[] args)
                     {
                           M(1);
                           M(1, 1, 1);
                           M(1, 1L, 1L);
                     }
              }
Re: [C#, этюд] overload resolution
От: Пельмешко Россия blog
Дата: 25.09.09 16:21
Оценка:
Здравствуйте, pt4h, Вы писали:

P>Небольшой этюд получился. Что будет напечатано?


Пометили бы, что C# 4.0

Кажется будет:
3 // generic-метод (3ий) более подходящий чем второй, так как не требует implicit-каста аргумента из int
1 // тут аналогично, но с тремя аргументами
1 // а тут просто кажется :D

Видимо default-аргумент должен давать какой-нибудь эффект...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.