2014-12-09 1 views
0

У меня есть список типа StackBuilder:C# Удалить из списка NaN <object>

public class StackBuilder 
{ 
    private int quoteID = 0; 
    private double price = 0; 
    private double size = 0; 

    public int QuoteID 
    { 
     get { return quoteID; } 
    } 

    public double Price 
    { 
     get { return price; } 
    } 

    public double Size 
    { 
     get { return size; } 
    } 

    public StackBuilder(int quoteID, double price, double size) 
    { 
     this.quoteID = quoteID; 
     this.price = price; 
     this.size = size; 
    } 
} 

Я пытаюсь удалить все элементы, которые имеют цену, равную NaN. Это то, что у меня есть, но по какой-то причине это не сработает.

BidStack.RemoveAll(item => item.Price == Double.NaN); 
AskStack.RemoveAll(item => item.Price == Double.NaN); 

Любые предложения?

РЕШИТЬ:

BidStack.RemoveAll(item => Double.IsNaN(item.Price)); 
AskStack.RemoveAll(item => Double.IsNaN(item.Price)); 
+0

Duplicate http://stackoverflow.com/questions/1145443/why-is-double-nan-not-equal-to-itself – paqogomez

ответ

7

== Оператор не работает, как вы ожидаете от NaN, вместо этого использовать Double.IsNaN(x).

+0

Он «работает» - он просто не возвращает 'true' для двух' NaN 's. –

+1

Это, по сути, специфическая характеристика 'NaN', что значение« NaN »не равно самому себе. Существует также более одного действительного представления «NaN». –

+0

отлично работает! @Dai – kknaguib

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