[英]converting a string to an int gives a compile error?
看完SO上的一些“如何将字符串转换为int”文章之后,我求助于使用;
public MyObject(Object parObject)
{
this.VersionInt = Convert.ToInt32(this.parObject.VersionString);
// object has a field called 'VersionString' which holds a
// string-typed version number (1.0, 2.3, etc.)
}
public int VersionInt{ get; set; }
但是,我收到了编译消息“无法将类型'int'隐式转换为'string'。这不正是该方法应该执行的操作,从而使编译错误过时了吗?
我很抱歉,如果这是某件事的重复,但是我找不到其他人遇到同样的问题。 可能是因为我忽略了一些明显的问题。
像这样将其转换为double并转换为int;
this.VersionInt = (int)Convert.ToDouble(this.parObject.VersionString);
要么
this.VersionInt = (Int32)Convert.ToDouble(this.parObject.VersionString);
给我同样的信息
编辑:因为每个人都告诉我,伪名称比澄清更令人困惑,这是实际的代码;
private EA.Element element;
public Requirement(EA.Element element)
{
this.element = element;
this.Status = (int)Convert.ToDouble(this.element.Status);
}
public string Status { get; set; }
this.element.Status
是一个string
。 毫无疑问,那里是因为编译器告诉我,所以当我将其悬停时,编译器会告诉我。 ( string EA.IDualElement.Status { get; set; }
另一个编辑:可能是因为我忽略了明显的东西。可能是因为我忽略了明显的东西。可能是因为我忽略了明显的东西。可能是因为我忽略了明显的东西。可能是因为我忽略了明显的东西..可能是因为我忽略了明显的东西..可能是因为我忽略了明显的东西..
可能是因为在工作结束时,我开始将Version-types转换为Status-types。.非常抱歉,您抽出宝贵的时间,我要再喝杯咖啡
您确定会收到cpmpiler错误吗? 我想您在执行代码时遇到错误,使之成为运行时错误。 特别是您不能将"1.2"
转换为整数,因为它是double
精度整数(如果有的话)。 因此,您必须将其拆分为.
使用String.Split
:
string[] numbers = mthis.parObject.VersionString.Split('.');
this.VersionMajor = Convert.ToInt32(numbers[0]);
this.VersionMinor = Convert.ToInt32(numbers[1]);
无论如何,为什么不简单地使用Version
-class来为您提供所有这些功能呢?
Version version;
if(Version.TryParse("1.2", out version)) { ... };
这很令人困惑,因为实际上您无法获得该代码中提到的错误。 当您显示的代码将字符串转换为int时,为什么编译器为什么会抱怨无法将int转换为string?
但是,由于您使用的版本根本不是整数。 您应该拥有一个Version
实例或至少多个int
properties,例如Major
和Minor
。
要创建一个版本,可以使用Version.TryParse
:
// note that i've changed Object to MyObject
public MyObject(MyObject parObject)
{
Version v;
if(Version.TryParse(parObject.VersionString, out v))
{
this.Version = v;
}
else
throw new ArgumentException("invalid version: " + parObject.VersionString);
}
public Version Version { get; set; }
为此使用TryParse
方法。
var intAsString = "99";
var intAsInt = 0;
if(!TryParse(intAsString, out intAsInt))
{
//Didn't parse int properly.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.