Visual C# - Get访问器方法返回0表示值

时间:2012-08-08 16:35:36

标签: c# get set static-methods

我正在尝试在表单之间传递方法值。结果,我已经制作了我想要传递数据的方法。由于我使用非静态文本框来收集用户输入,我还使用公共属性方法来解析用户的输入,将其值存储在公共类级静态变量中,并将值返回给静态调用变量的方法。

public static int laborHours;

public int lHoursB
{
  get
  {
    return laborHours;
  }
  set
  {
    laborHours = int.Parse(lHours.Text);
  }
}

private static decimal laborMethod(decimal laborTotal)
{
  const decimal laborCharge = 50M;
  decimal labor = 0;

  labor = laborCharge * laborHours;
  return labor;
}

public static decimal amountCharged;

public decimal amount
{
  get
  {
    return amountCharged;
  }
  set
  {
    amountCharged = int.Parse(amtBox.Text);
  }
} 

public static int numberOfParts;

public int partsNumber
{
  get
  {
    return numberOfParts;
  }
  set
  {
    numberOfParts = int.Parse(partsBox.Text);
  }
}

private static decimal subtotalMethod(decimal subTotal)
{
  decimal subtotal = 0;

  subtotal = amountCharged * numberOfParts;

  return subtotal;
}

private static decimal subtotal2Method(decimal subtotalTwo)
{
  decimal labor = 0;
  decimal subtotal = 0;

  labor = laborMethod(labor);
  subtotal = subtotalMethod(subtotal);
  subtotalTwo = subtotal + labor;

  return subtotalTwo;
}

private static decimal taxMethod(decimal salesTax)
{
  const decimal tax = .08M;
  decimal sTax = 0;
  decimal sub = 0;
  sub = subtotalMethod(sub);

  sTax = sub * tax;

  return sTax;
}

编译器将所有内容都检查为干净的编译,但这里有一个逻辑错误,我似乎无法找到。当我用程序运行一个简单的测试时,每个文本框都返回一个“0”。

请帮帮忙?

1 个答案:

答案 0 :(得分:1)

与正常写作方式相比,您的属性又回到了前面。我建议你这样写:

public int lHoursB
{   
  get
  {
    int result = 0;
    int.TryParse(lHours.Text, out result);
    return result;
  }
  set
  {
    lHours.Text = value.ToString();
  }
} 

然后你可以这样做:

lHoursB = 10;

将lHours文本框设置为“10”。我使用过TryParse而不是Parse,因为如果它不能解析字符串,后者将抛出FormatException;你可能更喜欢有一个例外,在这种情况下使用Parse。你也应该使用Decimal.Parse / TryParse而不是Int32.Parse为金额,这是一个小数而不是int。最后,如果要格式化特定区域性的int,可以在int.ToString调用中指定区域性(请参阅Int32.ToString())。