C#从string转换为int或int32。可能?

时间:2010-11-25 17:00:29

标签: c# casting

我在博客中看到你可以从string转换为int,并且使用(int?)更好地处理可能的null值。请参阅博客here

然而,当我尝试这样做时,visual studio抱怨说不能隐式地将类型'int'转换为'string'。

真的有可能吗? 或者我做错了什么?

13 个答案:

答案 0 :(得分:2)

使用int.Parse()或者更好的是int.TryParse()

int someInt;
if(int.TryParse(aString, out someInt)
{
    // work with the int
}
else
{
    // handle error
}

不同之处在于,如果字符串不是有效整数,int.Parse()会抛出异常。 int.TryParse()返回true并将其out参数设置为结果(如果它是有效整数),否则返回false并且out参数的值未定义。

答案 1 :(得分:2)

文章讨论了null coalesce operator??),而不是nullables(int?bool?等)。

这是一种确保可以将第一个非空值赋给变量的机制。

来自MSDN:

  

用于定义可空值类型以及引用类型的默认值。如果它不为null,则返回左侧操作数;否则返回正确的操作数。

运算符的两边应该是相同的类型,或者它们之间有隐式转换才能使用它。

答案 2 :(得分:2)

在上面提到的文章中,XElement被转换为int(或int?),因为XElement实现了显式转换运算符。

你不能以这种方式施放字符串。你必须使用像int.Parse或int.TryParse这样的东西。

答案 3 :(得分:2)

您要做的事情无法完成。但是,你可以使用扩展方法,所以你最终会像这样使用它:

int? myInt = "123".ToNullableInt();

扩展名的定义是:

public static class Extensions
{
   public static int? ToNullableInt(this string arg)
   {
       int result;
       if (int.TryParse(arg, out result))
       {
           return result;
       }
       return null;
    }
}

答案 4 :(得分:1)

您不能从string转换为int,但您可以进行转换。所以你可能想要这样做:

int value = Convert.ToInt32("1234");

您链接到的博客文章没有谈到将字符串转换为int。相反,它讨论了使用空合并运算符。可用于处理转换字符串的一种方法是使转换方法返回int?,然后使用空合并运算符来提供选择的默认值。然后你可以说:

int value = SafeConvert.ToInt32(stringValue) ?? 1; // Assigned 1 if conversion fails.

这是SafeConvert.ToInt32方法的一种可能实现:

public static int? ToInt32(string value)
{
    int n;
    if(!int.TryParse(value,out n))
        return null;
    return n;
}

答案 5 :(得分:1)

无法将字符串转换为整数。 但是,int.Parse(string)和Convert.ToInt32(object)可以提供帮助。

你可以将任何类型的空值(只要它的盒子)转换为Nullable ......在这种情况下,你总是会得到null。

答案 6 :(得分:0)

您的意思是Int32.ParseInt32.TryParse吗?

答案 7 :(得分:0)

 int number =   int.Parse("123");

答案 8 :(得分:0)

在那篇文章中我没有看到他将String转换为int。如果您知道字符串是int,则可以使用Int32.Parse("123"),如果您不确定,可以使用Int32.TryParse("123x",out intValue),如果字符串不是int,则返回false(相反于抛出错误)

答案 9 :(得分:0)

你不能只使用int.TryParse方法吗?

string stringToCast = "1";
int result;
int.TryParse(stringToCast, out result);

答案 10 :(得分:0)

Yuo应该能够使用int.Parse或int.TryParse进行转换。如果你只是做一个简单的(int)myvar那么它会给你一个错误。

答案 11 :(得分:0)

在C#中无法从string转换为int。你可以使用int.Parse(somestring)来做到这一点。

那篇文章所说的是:

string a = somestring ?? "";

是一种简短的方法:

string a;
if (somestring == null)
{
    a = somestring;
}
else
{
    a = "";
}

答案 12 :(得分:0)

让我们用示例代码

简要介绍一下
int x = int.parse("546")

将产生输出

x = 546

但是这个

x = int.parse("546.0")

会给出错误。为此,你必须做双重

x = convert.todouble("546.0")

将给出

x = 546.0 

convert.toint32(x)将生成546。 所以关键是包含双重文字的字符串不能直接转换为双原语类型。