查看了一些'如何将字符串转换为int'关于SO的帖子,我使用了;
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'到'字符串'。 是不是该方法应该做什么,从而使编译错误过时了?
如果这在某种程度上与某些内容重复,我表示道歉,但我无法找到遇到同样问题的其他人。可能是因为我忽略了一些明显的事情......
将其转换为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; }
另一个编辑: 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的东西...... 可能是因为我忽略了一些明显的事情......
可能是因为在我工作日结束时我开始将版本类型转换为状态类型..我非常抱歉占用你的时间,我会让自己另一个咖啡
答案 0 :(得分:0)
你确定你得到 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
- 这个开箱即用的所有这些?
Version version;
if(Version.TryParse("1.2", out version)) { ... };
答案 1 :(得分:0)
令人困惑,因为实际上你无法得到你用该代码提到的错误。当你显示的代码将字符串转换为int时,为什么编译器会抱怨他不能将int转换为字符串?
但是,因为您使用的版本根本不是整数。您应该拥有Version
个实例或至少多个int
- 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; }
答案 2 :(得分:-3)
使用TryParse
方法。
var intAsString = "99";
var intAsInt = 0;
if(!TryParse(intAsString, out intAsInt))
{
//Didn't parse int properly.
}