0

次のような条件をつけてみました

public float GetSimilarity(int doc_i, int doc_j)
    {
        float[] vector1 = GetTermVector(doc_i);
        float[] vector2 = GetTermVector(doc_j);

      if (checkbox1.checked == true )

         return Similarties.ComputeDiceSimilarity(vector1, vector2);

      else if (checkbox2.checked == true )

        return Similarties.ComputeCosineSimilarity(vector1, vector2);

      else 

         return Similarties.ComputeJaccardSimilarity(vector1, vector2);
    }

、しかし問題は、チェックボックスがクラス内で認識されないことです。この問題を克服する方法を教えてください。。プログラミングが不十分でごめんなさい。よろしくお願いします。

4

1 に答える 1

1

何かを計算する必要がある別のクラスのメソッドのコントロールに直接アクセスする必要があるのはなぜですか?UIをビジネスロジックにハードリンクすると、再利用可能なコードが回避されます。

変数を引数として渡すことができます。

public float GetSimilarity(int doc_i, int doc_j, 
    bool compDiceSimilarity, bool compCosineSimilarity)
{
    float[] vector1 = GetTermVector(doc_i);
    float[] vector2 = GetTermVector(doc_j);

    if (compDiceSimilarity)
        return Similarties.ComputeDiceSimilarity(vector1, vector2);
    else if (compCosineSimilarity)
        return Similarties.ComputeCosineSimilarity(vector1, vector2);
    else
        return Similarties.ComputeJaccardSimilarity(vector1, vector2);
}

ちなみに、コントロールと変数にはもっと意味のある名前を使用する必要があります。

于 2013-02-12T22:53:59.247 に答える