2011-12-04 6 views
1

オブジェクト(文字列を保持する)をdoubleに変換したい場合は、文字列に変換するために失敗した場合(ダブルに変換できない文字列が含まれています)、doubleとstringを使用してList<object>にします。オブジェクトをdoubleに変換する方法、失敗した場合は文字列として扱うか?

私はこのようなものがあります:あなたはdouble.TryParse()を使用することができ (thisNavigatorがのXPathNavigatorある)

object paramValue; 
paramValue = Convert.ToDouble(thisNavigator.ValueAsDouble); 

答えて

4

これはおそらく何か?

static void Add(List<object> list, XPathNavigator thisNavigator) 
{ 
    string s = thisNavigator.ValueAsString; 
    double d; 
    if(double.TryParse(s, out d)) 
    { 
     list.Add(d); 
    } 
    else 
    { 
     list.Add(s); 
    } 
} 
+0

明示的に文化を指定することをお勧めします。 TryParse'は、それが現在の文化であっても。 – CodesInChaos

+1

これはどういう意味ですか? – Patryk

1

を:

object paramValue = ...; 
double doubleValue; 
if(!double.TryParse(thisNavigator.Value, out doubleValue)) 
{ 
    paramValue = thisNavigator.Value; 
} 

しかし、いっそのこと、あなたのように入力した値を返す必要がありますthisNavigator.TypedValueを使用することができます適切なタイプ(しかし、オブジェクトとしてボックス化されています) - それをあなたのリストに直接挿入することができます。私はデザインに疑問を呈する必要があります - どうしてあなたはList<object>を守っていますか?より良い方法が必要です。

+0

これはパラメータの値リストです。数値(2倍)または文字列(パスなど)である可能性があります。もう1つの質問:なぜ私はこれを行うことができません:if(!double.TryParse(thisNavigator.Value、out(double)paramValue)) {// .... – Patryk

関連する問題