2013-08-09 10 views
8

整数を1行でチェックする方法は?3進整数チェック

sample.AddRange(Statistics.Select(player => new Stats 
         { 
         SeasonFromYear = Convert.ToInt32(seasonFromYear) 
         } 

これは私のために働いています。

int a; 
SeasonFromYear = int.TryParse(seasonFromYear, out a) ? a : default(int); 

しかし、すべてのプロパティでは、aのような1つの変数を宣言する必要があります。それがなければ1行でチェックできますか?必要はありません。この

sample.AddRange(Statistics.Select(player => new Stats 
         { 
         SeasonFromYear = is integer ? then value : else default value 
         } 

答えて

6

あなたは、拡張メソッドを作成することができます。

public static int ToInt(this string v) 
{ 
    int a = 0; 
    int.TryParse(v, out a); 
    return a; 
} 

そして:

int number = "123".ToInt(); 

編集

それとも、outパラメータとして整数を渡すことができます。

public static bool ToInt(this string v, out int a) 
{ 
    return int.TryParse(v, out a); 
} 

用法:

int number = 0; 
"123".ToInt(out number); 
4

よう

何か。 int.TryParseが失敗した場合、adefault(int)に設定されます。ただ、使用:

int a; 
int.TryParse(sessionFromYear, out a); 
SeasonFromYear = a; 

それとも、本当に1行でそれをしたい場合、あなたは自分のラッパーメソッドだ作成する必要があるだろう:

public static int TryParseInline(string in) { 
    int a; 
    int.TryParse(sessionFromYear, out a); 
    return a; 
} 

... 

sample.AddRange(Statistics.Select(player => new Stats 
{ 
    SeasonFromYear = Util.TryParseInline(seasonFromYear), 
    ... 
}) 
+1

理由だけではなく 'int.TryParse(SessionFromYearアウトsessionFromYear、)'? – Pawel

+0

ありがとう、私は本当に1行でそれを作るように頼んだ。 –

+0

+1、これは何かを有効にします... –

0

試してみてください。

int.TryParse(sessionFromYear, out SessionFromYear) 

SessionFromYearは、必要な処理を行うメソッドを作成するだけです。例:

public int ParseInt(string input) 
{ 
    int value; 
    int.TryParse(input, out value); 

    return value; 
} 

、その後、あなたはすべてのこのような場所に、このメソッドを使用することができます。

SessionFromYear = ParseInt(sessionFromYear); 

あなたはそれが本当に凝った作りにしたい場合は、あなたも、文字列クラスの拡張メソッドを作成してからちょうどsessionFromYear.ToInt()ような何かを行うことができます

+0

これは 'bool'を値として返しますが、実際には返される' int'値が必要です。 u plsが私の質問をもう一度チェックできますか?私はそれを更新しました –

+0

レスポンスを編集しました。あなたが必要とするものを実行して、どこでも使えるメソッドを作成するだけです。 – Pawel

+0

okありがとう...... –

1

安全なキャストを使用して、1行でヌルコセリングチェックを試したことがありますか?

SeasonFromYear = seasonFromYear as int ?? default(int); 
+0

ありがとうございます。int構文解析が 'seasonFromYear as int'で失敗した場合、エラーを返しますか? –

+0

安全なキャスティングはエラーを返しません。しかし、これは私がそれを記述したのでうまくいきません。整数はnull値ではないため、このようにキャストすることはできません。 –

+0

あなたはどういう意味ですか?だから、エラーを返すことはありません。それは私の必要な方法で動作するのだろうか? –