2017-06-15 194 views
-3

我正在編寫一個程序,它讀取一個文本文件並且收集每個單詞的信息。 (有點像機器學習...) 而不是初始化每個單詞的變量thousends,它的詳細信息的細節(是:例如:包含「啊」三次,在這個位置)。 我想讓程序自動生成一個名稱(已經完成了該部分[例如aa,ab,ac,...,fa,fb,fc,...]),然後在WordProp中生成屬性生成的名稱。C# - 自動生成一個名稱爲變量的新屬性

我真的很高興,如果我寫的不是完整的廢話。 感謝任何人,誰有解決這個問題的想法。

static void learn() { 
    for (int i; i > 10; i++) { 
     //Here I want to generate a new property, in which i can save 
     //the data collected this iteration 

     WordProp /*Variable with the name*/ = new WordProp(); 
     /*Name of auto-generated property*/.Name = "blabla"; 
     /*Name of auto-generated property*/.Position = 5; 
     /*Name of auto-generated property*/.Amount = 10; 
    } 
} 

class WordProp 
{ 
    string name; 
    int pos, 
     amo; 

    public string Name 
    { 
     get 
     { 
      return name; 
     } 
     set 
     { 
      name = value; 
     } 
    } 

    public int Position 
    { 
     get 
     { 
      return pos; 
     } 
     set 
     { 
      pos = value; 
     } 
    } 

    public int Amount 
    { 
     get 
     { 
      return amo; 
     } 
     set 
     { 
      amo = value; 
     } 
    } 
+3

如果你真的真的* *要做到這一點就像那樣,那麼C#可能不是該工作的最佳語言。爲什麼不把它們放到像[List](https://msdn.microsoft.com/en-us/library/6sh2ey19(v = vs.110).aspx)或[Dictionary](https:/ /msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx)? – stybl

回答

2

這並不完全清楚你想獲得什麼。我試圖弄清楚這一點,你想在運行時有一個動態對象構建,動態操作類的實例,添加一個屬性(本質上是一個支持字段的方法),它是每次迭代時的類型定義。這是你要求的嗎?

我有兩個點在此強調:

1 - C#是一種強靜態類型語言,它具有的東西,如動態,也爲運行時編譯和反思支持,但也許這應該更easilly完成使用弱類型的動態語言,例如javascript或python,其中更容易創建對象的實例並將其擴展。

2-是您建模數據正確的方法嗎?擁有這樣的對象的目的是什麼,它代表什麼?你是否需要爲每個屬性使用不同類型的實例,爲什麼?這些類型有什麼不同?我建議你想要實現的數據結構可能是Dictionary,但我可能是錯的。試着找出是否已經有適合你的數據結構,而不是爲你的目的創建一個非常手工的類型,使用通用數據結構是我猜測的最常見的事情。

public class WordProp { 
public string Name {get;set;} 
public int Position {get;set;} 
public int Amount {get;set;} 
} 

也許字典< TKEY的,TVal >是你在找什麼,用t鍵作爲字符串識別你的財產,並TVal作爲WordProp