Странное (возможно, неправильное?) поведение компилятора C# с перегрузкой методов и перечислениями.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Странное (возможно, неправильное?) поведение компилятора C# с перегрузкой методов и перечислениями.

Сообщение Anonymous »

Сегодня я обнаружил очень странное поведение при перегрузке функций C#. Проблема возникает, когда у меня есть метод с двумя перегрузками: одна принимает объект, а другая принимает Enum любого типа. Когда я передаю 0 в качестве параметра, вызывается версия метода Enum. Когда я использую любое другое целочисленное значение, вызывается версия объекта. Я знаю, что это можно легко исправить, используя явное приведение типов, но я хочу знать, почему компилятор ведет себя таким образом. Это ошибка или какое-то странное языковое правило, о котором я не знаю?
Приведенный ниже код объясняет проблему (проверено с помощью среды выполнения 2.0.50727)
class Program
{
enum Bar
{
Value1,
Value2,
Value3
}

static void Main(string[] args)
{
Foo(0);
Foo(1);
Console.ReadLine();
}

static void Foo(object a)
{
Console.WriteLine("object");
}

static void Foo(Bar a)
{
Console.WriteLine("enum");
}
}


Подробнее здесь: https://stackoverflow.com/questions/315 ... oading-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Странное поведение компилятора в отношении конструкторов по умолчанию в C++
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Является ли это странное поведение Clang ошибкой компилятора?
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение CLR/компилятора в режиме выпуска, но не в режиме отладки
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Возможно ли, что архив xcode поврежден, не сообщив мне об этом? СТРАННОЕ поведение iOS 4.x
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Проблема параллелизма Java с перечислениями и ссылками
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»