2016-11-30 8 views
0

私は辞書の1つのキーに2つの値を設定する必要があります。 Webで見つかった解決策は、2つのフィールドを持つ新しいクラスを作成し、そのオブジェクトを値として使用することです。Dictionaryに値としてのCustomClassObjectsを追加する

しかし、DictionaryのforループからCustomClassObjectsにどのように値を割り当てることができますか?ここで コードです:

Dictionary<char, Huffmans> HuffmanDictionary = new Dictionary<char, Huffmans>(); 
     Program.text = File.ReadAllText(Program.sourcetext); 
     char character; 
     for (int i = 0; i < Program.text.Length; i++) 
     { 
      counter++; 
      character = Convert.ToChar(Program.text[i]); 
      if (HuffmanDictionary.ContainsKey(character)) 
       HuffmanDictionary[character].probability++; 
      else 
       HuffmanDictionary.Add(character, 1);// here is the problem, obviously program can't assign value directly to class... 
     } 
public class Huffmans 
{ 
    public int code = 0; 
    public double probability = 0; 
}  

基本的に、私はこの段階でのみ「確率」の値を割り当てる必要があります。各繰り返しで "Huffmans"のコンストラクタを呼び出す必要がありますか?

任意の助けのためのビッグおかげで、アレックス

+0

例外はありますか? – Damith

+0

"int"から "Huffmans"に変換することはできません –

答えて

1

あなたが値を追加する前に、あなたのクラスをインスタンス化する必要があります:

HuffmanDictionary.Add(character, 1); 

は次のようになります。

HuffmanDictionary.Add(character, new Huffmans{ code = 1 }); 

またあなたがのコンストラクタを作成することができますあなたのクラス:

public class Huffmans 
{ 
    public Huffmans(int _code) 
    { 
     code = _code; 
    } 

    public int code = 0; 
    public double probability = 0; 
} 

その後、あなたが行うことができます:

HuffmanDictionary.Add(character, new Huffmans(1)); 

EDIT: いくつかのより明確化:あなたは辞書にタイプintを渡しているが、それはタイプHuffmansを期待しているので、

HuffmanDictionary.Add(character, 1); 

が失敗しました。私たちの辞書です:Dictionary<char,Huffmans>()

HuffmanDictionary.Add(character, new Huffmans{ code = 1 }); 

作品今、我々はタイプHuffmans新しいオブジェクトを作成していると私たちは私が正しくあなたのコメントを理解している場合code value 1に

わからないを設定しますが、効果的にしているので、

var newHuffmans = new Huffmans{ code = 1 }; 
HuffmanDictionary.Add(character, newHuffmans); 

しかし、すべてのコードを書き出し、クラスで名前付き変数を作成するのではなく、これをスキップして渡します辞書に直接入れる。

+0

早速、お返事ありがとうございます!今すぐチェックしてみてください。最初のシナリオではどういうことが起こりますか?このインスタンスにはどのような名前が付けられますか?名前を直接指定する場合には当てはまりませんので、 ハフマンス_name_ =新しいハフマンズ –

+0

私の回答を更新しました – JanR

+0

ありがとうございます。この「名前のない変数」。名前付きのものと同じように格納されるのか、それとも一時的なものなのでしょうか?私が正しいとすれば、名前のない変数はDictionaryの対応するキーを使って呼び出すことができますか? –

関連する問題