[英]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.