我有一组名为这样的对象:
_1,_2,_3 .... _n
不是数组,只是自定义控件中的一堆对象。我想将名称转换为int。首先我删除_
,但如果使用
private void Superficie_MouseDown(object sender, MouseButtonEventArgs e)
{
int index = 0;
Shape myShape = ((Shape)sender);
string lcNombre = myShape.Name.Remove(0, 1);
//--------------------------------------------------------------------
// Those are my tryes
// Doesn't work because it must expect a nullable value
index = lcNombre as decimal;
// Doesn't work Can't convert string to int
index = (int)lcNombre;
//--------------------------------------------------------------------
if (index > 0)
{
bool lIsSelected = !Pieza.Superficies.Where(x=>x.Id == index).First().IsSelected;
Pieza.Superficies.Where(x => x.Id == index).First().IsSelected = lIsSelected;
if (lIsSelected)
myShape.Fill = new SolidColorBrush(SystemColors.HotTrackColor);
else
myShape.Fill = new SolidColorBrush(SystemColors.ControlLightLightColor);
}
}
我该怎么做才能施展它?
答案 0 :(得分:5)
最直接的方法是
index = int.Parse(lcNombre);
如果你不完全确定lcNombre是否真的是一个整数,你可以使用
int result;
bool isInt = int.TryParse(lcNobre, out result);
最后你可以使用
index = Convert.ToInt32(lcNobre);
如果输入值不能转换为整数,则此方法(如int.Parse())将抛出FormatException。
答案 1 :(得分:1)
您还可以使用Convert
静态方法:
index = Convert.ToInt32(lcNombre);
MSDN链接:http://msdn.microsoft.com/en-us/library/sf1aw27b(v=vs.110).aspx
错误明智..您可能想要使用TryParse
..因为它会返回true或false,具体取决于成功转换:
int index;
if (int.TryParse(lcNombre, out index)) {
// conversion successful
}
else {
// couldn't convert
}
int.TryParse
:http://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx
答案 2 :(得分:1)
试试这个
int result=0;
Int32.TryParse(lcNombre,out result);
答案 3 :(得分:0)
我最喜欢的方法是按照以下方式制作扩展方法
public static class ExtensionMethods
{
public static int? AsInteger( this string str)
{
int value;
if ( int.TryParse( str, out value ) )
{
return value;
}
else
{
return null;
}
}
}
那么你可以这个
index = lcNombre.AsInteger() ?? 0;
答案 4 :(得分:0)
string strArr[] = myShape.Name.Split('_',StringSplitOptions.RemoveEmptyEntries)
int num;
int.TryParse(strArr[0],num);