1

int の値を null に設定したり、実際の値に設定したりする必要がある場合があります。問題は、その値を別の変数を作成するのではなく、SAME 変数に格納する必要があることです。

int? year;
if(something)
   year = null;
else
   int.tryParse("some string", out year);

「何らかの文字列」は常に有効な int ですが、問題は int で int.tryParse を使用できないことですか? それを回避する方法は?

4

8 に答える 8

9

文字列が常に有効な整数になる場合は、Parseメソッドを使用する必要があります。

year = int.Parse("some string");

有効な整数でない場合は、FormatExceptionまたはを取得します(単にを返すだけの、OverflowExceptionとは異なります)。TryParsefalse

于 2012-06-13T20:52:30.367 に答える
1

Convert.ToInt32(year)を使用できます。

于 2012-06-13T20:54:09.923 に答える
1

これを試すことができます:

public class NullInt
{
    public void ParseInt(string someString, ref int? someInt)
    {
        int i;

        if (int.TryParse(someString, out i))
        {
            someInt = i;
        }
    }
}

やや次のように使用されます:

NullInt someInt = new NullInt();
int? targetInt = null;
someInt.ParseInt("42", ref targetInt);
于 2012-06-13T21:02:54.670 に答える
0

「いくつかの文字列」が常に有効なintである場合は、 System.Convert.ToInt32またはSystem.Int32.Parseを使用して、それをintに変換することができます。

于 2012-06-13T20:53:46.507 に答える
0

int.tryParse は、out 値だけでなくブール値を返します。これも実行できます。

int year;
int? finalYear;
if(int.TryParse("some string", out year))
    finalYear = year;

それ以外の場合、「何らかの文字列」が常に有効な int を返す場合、そうしないのはなぜですか

int? year = int.Parse("some string");
于 2012-06-27T06:16:05.940 に答える
0
public static class StringExtensions
{
    public static int? AsInt(this string input)
    {
        int number;
        if (int.TryParse(input, out number))
        {
            return number;
        }

        return null;
    }
}

使用法:year = someString.AsInt();

于 2014-11-06T14:46:05.340 に答える
-1

これも機能するようです:

int? year;
    if (something)
       year = null;
    else
    {
       int _year;
       int.TryParse(year.SelectedItem.Value, out _year);
       year = _year;
    }
于 2012-06-13T21:06:09.950 に答える
-2

Add in some error detection:

try
{
   year = int.Parse("some string");
}
catch()
{
   year = null;
}
于 2012-06-13T20:57:03.110 に答える