1

ConcurrentDictionary を out パラメータを使用して別のメソッドに渡す際に問題に直面しています。

メインメソッドでは、

Method1(1,2,dictionary);

public override int Method1(int x,int y, out ConcurrentDictionary<string,int> dictionary)
{
  if(dictionary.IsEmpty)
  {
   do something
  }
}

私が得たエラーメッセージは、「割り当てられていないパラメーター辞書の使用」です。そして、コード全体で辞書の内容を保持する必要があります。助けてくれてありがとう。

4

2 に答える 2

1

「アウト」って何だと思いますか?「out」は「ref」に少し似ています。「ref」と「out」は .NET参照型で機能します。「ref」は、変数が参照するオブジェクトをメソッドが変更できることを示します。つまり、変数が指しているメモリの部分を変更します。「out」は、変数が参照するオブジェクトをメソッドが定義することが期待されることを示します。

つまり、パラメータがない場合、メソッド内でパラメータのインスタンスをインスタンス化する必要があります

例えば

public override int Method1(int x,int y, out ConcurrentDictionary<string,int> dictionary)
{
    dictionary = new ConcurrentDictionary<string,int>();
    // It doesn't make sense to check if it is empty here as it will always be empty
    // if(dictionary.IsEmpty)
    //  {
于 2013-11-19T04:10:09.133 に答える