我在博客中看到你可以从string转换为int,并且使用(int?)更好地处理可能的null值。请参阅博客here
然而,当我尝试这样做时,visual studio抱怨说不能隐式地将类型'int'转换为'string'。
真的有可能吗? 或者我做错了什么?
答案 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.Parse和Int32.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
。
所以关键是包含双重文字的字符串不能直接转换为双原语类型。