Тестирование для плавающего NaN приводит к переполнению стека

C #, VS 2010

Мне нужно определить, является ли значение с плавающей точкой NaN.

Тестирование поплавка для NaN с помощью

float.IsNaN(aFloatNumber) 

вылетает с переполнением стека.

Так же

aFloatNumber.CompareTo(float.NaN).

Следующее не дает сбоя, но это бесполезно, так как возвращает NaN независимо от:

aFloatNumber - float.NaN 

Поиск по «переполнению стека» возвращает результаты об этом веб-сайте, а не результаты о фактическом переполнении стека, поэтому я не могу найти соответствующие ответы.

Почему мое приложение переполняется стеком при тестировании на NaN?

Изменить: стек вызовов:

Изменить: это явно что-то в моем коде: это утверждение:

bool aaa = float.IsNaN(float.NaN);
работает нормально в конструкторе приложения, сразу после InitializeComponent ();работает нормально в конструкторе класса для пользовательского элемента управления, сразу после InitializeComponent ();но вылетает в обработчике событий внутри класса для пользовательского элемента управления.

Итак, вот что я делаю:

Аннотация Пользовательский элемент управления: открытый абстрактный частичный класс ConfigNumberBaseBox: TextBoxимеет обработчик события Validating ValidateTextBoxEntryValidateTextBoxEntry определяется внутри класса ConfigNumberBaseBoxПользовательский элемент управления, который наследуется от ConfigNumberBaseBox: открытый частичный класс ConfigTemperBox: ConfigNumberBaseBoxЗапустите приложениеКогда я заканчиваю редактировать элемент управления ConfigTemperBox, вызывается ValidateTextBoxEntryValidateTextBoxEntry работает нормально, пока не встретит float.IsNaNпереполнение стека

Редактировать:

Debug.WriteLine () показывает, что код выполняется только один раз: без рекурсии.

Редактировать:

Это работает:

float fff = 0F;
int iii = fff.CompareTo(float.PositiveInfinity);

Это вылетает:

float fff = 0F;
int iii = fff.CompareTo(float.NaN);

Ответы на вопрос(3)

Ваш ответ на вопрос