2013-01-22 37 views
0

我有一個名爲movie的類。 Movie有一個movieYear字符串屬性和movieYearInt int屬性。我想要一個類方法,我可以發送電影對象並獲取已取得movieYear字符串屬性並將其值複製到movieYearInt的對象。稍後我將轉換對象的更多屬性。在班級方法中創建並返回對象的副本

這是電影類

public class movie 
{ 
    public string movieName { get; set; } 
    public string movieYear { get; set; } 
    public int movieYearInt { get; set; } 

    public movie convertFilm(movie m) 
    { 
     m.movieYearInt = int.Parse(m.movieYear); 
     return m; 
    } 
} 

,這是我想在我的形式獲取對象

movie m = new movie(); 
m.movieYear = cmbMovieYear.ToString(); 
movie newMovie = m.convertFilm(m); 

我得到的錯誤是:輸入字符串的不正確的格式 我做錯了什麼?

編輯 - 這是movieYear組合框

List<int> allYears = new List<int>(); 
allYears.AddRange(Enumerable.Range(1900, 113)); 
cmbMovieYear.DataSource = allYears; 

編輯 -

m.movieYear = cmbMovieYear.SelectedItem.ToString(); 

這是溶液。

+3

是什麼'cmbMovieYear.ToString()'的價值? –

+0

通過convertFilm步驟並檢查m.movi​​eYear的值。您可能有空間或解析器不喜歡的東西。 –

+0

請提供一個movieYear輸入內容的例子。如果它是點或其他東西,那麼int.Parse將會失敗。如果你想複製現有的電影,那麼從IClo​​neable繼承你的課 – Tomtom

回答

0

而不是返回轉換的對象,你有沒有考慮修改你的movieYearInt屬性的getter到這樣的東西?

public int movieYearInt 
    { 
    get 
    { 
     // add some validation, and consider using System.Int32.TryParse 
     return System.Int32.Parse(movieYear); 
    }  
    } 
+0

雖然很好的建議,這實際上並沒有回答他爲什麼他的崩潰正在發生的問題:) –

0
public class movie: ICloneable 
{ 
    public string movieName { get; set; } 
    public string movieYear { get; set; } 
    public int movieYearInt { get { return int.Parse(movieYear) set {movieYear = value.ToString()}} 

    public object Clone() 
    { 
     return new movie() {movieName = this.movieName, movieYear = this.movieYear}; 
    } 
} 

var m = new movie(); 
m.movieYear = "2001"; 
var newMovie = (movie) m.Clone(); 
+0

可能想檢查你的語法。你錯過了一個}。 但是,是的,通常如果你想複製一些東西,使用ICloneable接口。但值得指出的是,某些類型的變量(如對象和數組)是「參考」對象,並且指向內存中的一個點,而不是對象本身。克隆一個對象時,這些引用將被傳送,而不是該對象的副本,因此請確保在必要時遞歸調用「克隆」。 – Hoeloe

+0

1)int.Parse可以替換爲int.TryParse 2)抱歉,我輸入的代碼沒有檢查... –

+0

儘管TryParse不一定是所需的行爲。它取決於程序的上下文。 – Hoeloe