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 回答