0

コードは次のとおりです。

class Program
{
    static void Main(string[] args)
    {

      List<Item> cont1 = new List<Item>();
      cont1.Add(objA); //objA is local varible that has been defined. 
      cont1.Add(objB); //objB is local varible that has been defined. 
      cont1.Add(objC); //objC is local varible that has been defined. 
      cont1.Add(objD); //objD is local varible that has been defined. 
      cont1.Add(objE); //objE is local varible that has been defined.

      int count = cont1.Count; 

      List<Item> cont2 = GroupingA(cont1, count);

      for (int i = 0; i < cont1.Count; i++)
      {
         Console.Write(cont1[i].Name + " ");//output the item's name.

      }
      Console.WriteLine();
      Console.Write("Container 2: ");
      for (int i = 0; i < cont2.Count; i++)
      {
         Console.Write(cont2[i].Name + " ");//output the item's name.
      }
    }
}
public class GroupItem
{
    public List<Item> GroupingA (List<Item> obj, int count)
    {
        List<Item> temp = new List<Item>();
        for (int i = 0; i < count; i++)
        {
            if (i == count - 1)
            {
                break;
            }
            else if (temp.Count > 0 )
            {
                break;
            }
            else
            {
                for (int j = i + 1; j < count; j++)
                {
                    bool equal = obj[i].EqualFirstPhase(obj[j]);
                    if (equal == true)
                    {
                        if (temp.Exists(element => element == temp[j]))
                        {
                            continue;
                        }
                        else
                        {
                            temp.Add(obj[j]);
                            if (temp.Exists(element => element == obj[i]))
                            {
                                continue;
                            }
                            else
                            {
                                temp.Insert(0, obj[i]);
                            }
                            i--;

                        }

                    }
                }

            }
            for (int k = 0; k < count; k++)
            {
                for (int l = 0; l < temp.Count; l++)
                {
                    if (obj[k].Name.Contains(temp[l].Name))
                    {
                        obj.RemoveAt(k);
                        count--;

                    }
                }
                if (obj.Count < count)
                {
                    k = 0;

                }
            }


        }
        return temp;
    }
}

GroupingAメソッドを使用して を に再グループcont1化したいcont2。ただし、エラーがあります。

名前 'GroupingA' は現在のコンテキストに存在しません。

誰でも私を助けることができますか?OOP、特にネーミングが本当に苦手です。

4

2 に答える 2

0

List<Item> cont2 = GroupingA(cont1, count);はクラスで呼び出されていProgramます。

メソッドがどこにあるかを示すクラス名またはオブジェクト識別子がないと、現在のクラスが検索されますProgram

いくつかの選択肢があります。

  • メソッドをGroupingA静的にし、行を次のように置き換えますList<Item> cont2 = GroupItem.GroupingA(cont1, count);

  • GroupItem のインスタンスを作成し、代わりにそれを参照します。

    GroupItem g = new GroupItem();
    List<Item> cont2 = your.GroupingA(cont1, count);
    
  • GroupingAメソッドをクラスの外に移動し、GroupItemクラス内に配置してProgram、行がどこにあるかを認識できるようにします。
于 2013-04-18T03:02:48.110 に答える
0

使用する必要があります:-

GroupItem grpItem  = new GroupItem(); 
List<Item> cont2 = grpItem.GroupingA(cont1, count);

理由:-

GroupingA メソッドは静的ではなく、 class で定義されていGroupingItemます。GroupingAそして、メソッドがそのクラスの一部であるかのように、Program クラスからアクセスしようとしています。他のクラスから非静的メソッドInstantiateにアクセスするには、そのクラスにアクセスし、そのオブジェクトを使用してクラスにアクセスする必要があります。静的メソッドの場合、.その特定のクラスの演算子を使用して直接アクセスできます。ex Class.Method(...)

于 2013-04-18T02:56:28.177 に答える