1

我无法让一种方法发挥作用,我不确定我是否以正确的方式进行操作。我想要做的是通过 button_click 将表单中的字符串发送到类中并在那里处理错误(tryparse 方法),然后将 boolvalue 发送回然后向用户报告和错误或打印输入列表框。

这是我应该将字符串发送到类中的表单代码。

private void btnOK_Click(object sender, EventArgs e)
{
     Errorcheck.GetDouble(numChoice);
}

然后是错误检查类:

public static bool GetDouble(string numChoice, out double value, double minLimit, double maxLimit)
{
     while (!double.TryParse(numChoice, out value))
     {
          if ((value >= minLimit) && (value <= maxLimit))
          {
              return true;
          }
      }
      return false;
}

如何从Errorcheck类中检索布尔值?是否可以。我做对了还是有更快的方法去做?

4

2 回答 2

2
private void btnOK_Click(object sender, EventArgs e)
{
   double foo;
   var myresult = Errorcheck.GetDouble(numChoice, out foo, 1, 2);

   //When myresult == true, foo contains the parsed value
}

myresult将包含 GetDouble 返回的结果true(值可以被解析并且在限制内)或false(值可以被解析但超出限制或首先无法解析)。此外,如果解析失败,foo 则将包含 0,否则解析的值(可能会或可能不会!)在限制范围内。

但是,我确实对您的代码有一些问题。第一的; 为什么你的类被命名Errorcheck,而事实上,它不做错误检查(那是什么?)而是解析一个值。

其次,为什么要使用 while() 构造?

public static bool GetDouble(string numChoice, out double value, double minLimit, double maxLimit)
{
    return double.TryParse(numChoice, out value)
             && ((value >= minLimit) && (value <= maxLimit));
}

第三; GetDouble() 实际上并没有“获得”“双倍”。它检查一个值是否可解析为双精度值,如果是,则在范围内。为了皮特,它返回一个布尔值。 编辑从头开始;我错过了out方法签名。它返回一个布尔值和值。

...然后还有更多,但我可能会吹毛求疵:P

而且,最后但并非最不重要的一点是,我看不出这与“如何在类/表单之间发送布尔值和变量”有什么关系?

接受我的善意建议,并获得一本好的 C# 或通用编程书籍,并稍微提高你的基本技能。你只会受益,很快你就会明白为什么你的代码在很多方面都是“坏的”,没有任何意图。

于 2012-07-17T21:15:42.520 回答
1

我会这样做:

private void btnOK_Click(object sender, EventArgs e)
{
    double parsedValue;
    if (Errorcheck.IsDoubleBetween(numChoice, out parsedValue, maxValue, minValue))
    {
        //Your code here
    }
}

错误检查代码:

public static bool IsDoubleBetween(string numChoice, out double value, double minLimit, double maxLimit)
{
    bool result = double.TryParse(numChoice, out value) && (value >= minLimit) && (value <= maxLimit);

    return result;
}

如您所见,有一些变化:

  1. 该名称IsDoubleBetween解释了方法逻辑。
  2. IsDoubleBetween使用正确的参数调用。
  3. 有一个使用IsDoubleBetween返回值。
  4. IsDoubleBetween代码更具可读性。

在这种情况下,我会尝试将两个操作分开IsDoubleBetween为两个方法,这样每个方法都有一个单一的责任 - 解析和检查值

于 2012-07-17T21:23:41.793 回答