2015-06-12 4 views
0

Здесь я получаю сообщение о том, что программа не может выйти из бесконечного цикла.C# Ошибка рекурсии - методы расширения

public static class Program 
{ 
    public static void Main(string[] args) 
    { 
     Object obj = new Object(); 
     Console.WriteLine(obj.GetClassName()); 
    } 

    public static string GetClassName(this object value) 
    { 
     return value.GetClassName(); 
    } 
} 
+10

Ваши вызовы 'GetClassName' с' value.GetClassName', который также вызывает 'value.GetClassName', который также вызывает' value.GetClassName', который также вызывает 'value.GetClassName', который также вызывает' value.GetClassName', который также вызывает ' value.GetClassName', который также вызывает 'value.GetClassName', который также вызывает' value.GetClassName', который также вызывает 'value.GetClassName', который также вызывает' value.GetClassName', который также вызывает 'значение.GetClassName', который также вызывает значение. GetClassName', который также вызывает 'value.GetClassName', который также вызывает' value.GetClassName', который также вызывает 'значение.GetClassName' до ... forever –

+0

Ну да - какой метод вы ожидали' value.GetClassName() 'для вызова? –

ответ

4

вам необходимо изменить метод расширения, чтобы сказать:

return obj.GetType().Name; 

ваш метод расширения вызывает себя, который вызывает бесконечную петлю проблемы/рекурсии.

Смежные вопросы