2011-09-30 63 views
1

C#的WinForms: 我要救的事情:什麼是好的結構保存此數據

name: string 
previous value: double 
new value: double 

所以每個實體都有這三個領域,它們的數量不會太多可言,也許最多10個。我想要對他們做的只是爲了能夠添加一些成員,然後通過它們循環並稍後閱讀它們。

所以一個簡單的方法是有三個數組,每個一個。 爲它創建一個類並不是真的很重要,所以我正在尋找一些我可以使用的好的結構,像上面說的那樣的數組?任何更好的選擇?

+0

是否有一個特別的原因,你想避免類/結構,而不是認爲它是對你的情況矯枉過正? – Joey

回答

2

類或結構顯然是要走的路。如果你想避免一個類,你可以使用Dictionary<string, KeyValuePair<double, double>>其中鍵是名稱和KeyValuePair代表以前和新值

+5

是的,那個繼承該代碼庫的可憐傢伙把它貼在Daily WTF上;) –

+0

是的,它正在回答這個問題:P。 – Joey

+0

如果OP認爲類是過度殺毒,那麼泛型(甚至是嵌套的)是什麼?祝賀代表:) –

12
class Foo 
{ 
    public string Name { get; set; } 
    public double PreviousValue { get; set; } 
    public double NewValue { get; set; } 
} 
+0

是的,但是我只是在我的問題中說過,我想用CLASS來尋找簡單的東西並不是那麼重要。謝謝。 – Bohn

+10

@BDotA,如果你認爲定義一個類太大了,我認爲你是以錯誤的方式接近OOP的。 –

1

爲他們創建一個對象:

public class Foo 
{ 
    public string Name { get; set; } 

    public double Value { get; set; } 

    public double OldValue { get; set; } 
} 

然後你可以將它們添加到通過他們一個列表和循環,並訪問它們:

foreach(var foo in myListOfFoos) 
{ 
    // Do something with foo.Name, foo.Value, etc... 
} 
+0

是的,但我只是在我的問題中說過,我不想用CLASS來尋找更簡單的東西。謝謝 – Bohn

+4

課程不是爲「大」事物保留的,它們只是幫助將你的作品/部分組合成邏輯塊。如果他們都是相關的,並且想將它們組合在一起並訪問它們,我不會看到有三個屬性的課程有任何問題。你甚至可以爲你的類添加一個ToString()方法,所以你可以調用foo.ToString()並讓它返回Name +「:」+ Value' –

+0

你知道結構和類之間的區別嗎? –

3

這沒有什麼錯與創建類保存自定義數據。

你甚至可以創建一個私人內部類,如果它不會被其他任何東西使用的話。

對於不需要索引數據集的需求使用數組有問題。

1

如果你進入OOP(你應該),那麼一切都是一個類。這些課程有什麼問題?他們不是根據他們有多大來選擇的。如果他們模擬真實的東西,那麼他們應該存在

我不會創造任何別人所說的話。

1

你是什麼意思,「不是真的那麼大的一筆交易來創建一個班級」?

類不是邪惡的。他們幫助構建您的數據。這是他們被髮明的主要原因之一。讓它成爲一個班級。它不會殺死你的代碼的性能,但肯定會增加可讀性,可維護性以及與使用其原語和集合相比的可讀性。

如果不是你自己,那麼對於最終會繼承你的代碼庫的可憐的chap。

使用一個類。

如果需要的話,我可以爲你指出一些關於物體方向的很好的閱讀材料。

1

我認爲一個類真的是最簡單的方法來存儲這些數據。我知道你一直說這不是一個足夠大的使用類,但如果你需要保存這個數據集以方便以後使用,你真的需要使用一個類。你甚至說自己是:

每個實體都有這三個領域

的「實體」你談論的是一個對象,它是一個類的實例。你可以有一個List<T>的對象,並通過foreach輕鬆地遍歷它們。

1

如果您不想創建類或結構,那麼您可以將數據存儲在元組列表中。

List<Tuple<string, double, double>> MyData = new List<Tuple<string, double, double>>(); 
MyData.Add(new Tuple<string, double, double>("test1", 1, 2)); 
MyData.Add(new Tuple<string, double, double>("test2", 3, 4)); 

如果是我,儘管我會繼續創建一個類,它將使未來的開發人員更容易找出您的代碼。

+0

更好...我不知道Tuples,MSDN說他們是.NET 4.0和我認爲在我們的Citrix盒子上我們有.NET 3.5 ..不能實際上用它來解決我的問題,但對我自己來說學習非常好。 – Bohn

相關問題