Здравствуйте, Пельмешко, Вы писали:
П>Здравствуйте, 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.
Небольшой этюд получился. Что будет напечатано?
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);
}
}
Здравствуйте, pt4h, Вы писали:
P>Небольшой этюд получился. Что будет напечатано?
Пометили бы, что C# 4.0
Кажется будет:
3 // generic-метод (3ий) более подходящий чем второй, так как не требует implicit-каста аргумента из int
1 // тут аналогично, но с тремя аргументами
1 // а тут просто кажется :D
Видимо default-аргумент должен давать какой-нибудь эффект...