c#int.tryParse可以为空的int如何?

时间:2012-06-13 20:50:22

标签: c# asp.net null int

我有时需要将int的值设置为null,有时设置为实际值。 问题是我需要将该值存储在SAME变量中,而不是创建另一个。

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

“some string”总是一个有效的int,但问题是我不能在int上使用int.tryParse? 如何解决这个问题?

8 个答案:

答案 0 :(得分:8)

如果您的字符串始终是有效整数,则应使用Parse方法。

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

如果它不是有效整数,您将获得FormatExceptionOverflowException(与TryParse不同,后者仅返回false)。

答案 1 :(得分:1)

您可以使用Convert.ToInt32(year)。

答案 2 :(得分: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);

答案 3 :(得分:0)

如果"某些字符串"永远是一个有效的int,然后您可以使用System.Convert.ToInt32System.Int32.Parse

将其转换为int

答案 4 :(得分:0)

int.tryParse返回一个布尔值,而不仅仅是out值 - 你也可以这样做:

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

否则,如果“some string”将始终返回有效的int,为什么不执行

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

答案 5 :(得分: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();

答案 6 :(得分:-1)

这似乎也有效:

int? year;
    if (something)
       year = null;
    else
    {
       int _year;
       int.TryParse(year.SelectedItem.Value, out _year);
       year = _year;
    }

答案 7 :(得分:-2)

添加一些错误检测:

try
{
   year = int.Parse("some string");
}
catch()
{
   year = null;
}