- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C# 的新手,今天我已经在这里发过一次帖,非常感谢能得到的所有帮助!我有一个用 Visual Basic 创建的程序。该表单有一个主表单 - AccountForm.cs
,三个副表单 - WithdrawlForm.cs
、DepositForm.cs
和 InterestForm.cs
。我有两个类,Account.cs 及其派生类 SavingsAccount.cs
。我正在尝试将下面字符串中的 InterestRate
更改为用户在 InterestForm
上输入的利率。此代码位于 SavingsAccount
类 .cs 文件中。
public new string toString()
{
return String.Format("Account Number: {0} Balance: {1:C} Interest Rate: {2:P}", AccountNumber, AccountBalance, InterestRate);
}
完整的 SavingsAccount.cs 文件
namespace Assignment_6_third_attempt
{
public class SavingsAccount : Account
{
private InterestForm interestForm = new InterestForm();
private double interestRate = 0.0;
#region Constructors
public SavingsAccount(int accountNumber)
{
base.accountNumber = accountNumber;
}
public SavingsAccount() { }
#endregion
double InterestRate
{
get { return interestForm.interestRate ; }
set { interestRate = interestForm.interestRate; }
}
public double Interest(double amount)
{
InterestRate = interestForm.interestRate;
return InterestRate;
}
public void AddInterest(double amount)
{
//interestForm.CalculateInterest();
AccountBalance = amount;
}
public new string toString()
{
return String.Format("Account Number: {0} Balance: {1:C} Interest Rate: {2:P}", AccountNumber, AccountBalance, InterestRate);
}
}
}
这是我的 AccountForm.cs 文件(此表单是主表单,其中显示了帐号、账户余额和利率。
namespace Assignment_6_third_attempt
{
public partial class AccountForm : Form
{
SavingsAccount savingsAccount;
public System.Windows.Forms.Label labelInformation;
public AccountForm()
{
InitializeComponent();
labelInformation = accountInfoLabel;
}
private void createAccountButton_Click(object sender, EventArgs e)
{
Random random = new Random();
int newAccountNumber = random.Next(0, 1000000);
savingsAccount = new SavingsAccount(newAccountNumber);
MessageBox.Show(savingsAccount.toString());
accountInfoLabel.Text = savingsAccount.toString();
depositButton.Enabled = true;
withdrawalButton.Enabled = true;
interestButton.Enabled = true;
}
private void depositButton_Click(object sender, EventArgs e)
{
DepositForm depForm = new DepositForm();
depForm.ShowDialog();
savingsAccount.Deposit((double)depForm.DepositAmount);
accountInfoLabel.Text = savingsAccount.toString();
}
private void withdrawalButton_Click(object sender, EventArgs e)
{
try
{
WithdrawalForm withdrawForm = new WithdrawalForm();
withdrawForm.ShowDialog();
savingsAccount.Withdraw((double)withdrawForm.WithdrawAmount);
accountInfoLabel.Text = savingsAccount.toString();
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.Message);
}
}
private void closeAccountButton_Click(object sender, EventArgs e)
{
depositButton.Enabled = false;
withdrawalButton.Enabled = false;
accountInfoLabel.Text = "";
savingsAccount = null; //this will clean it up off the heap.
}
private void interestButton_Click(object sender, EventArgs e)
{
InterestForm interestForm = new InterestForm(savingsAccount.AccountBalance);
interestForm.ShowDialog();
savingsAccount.AddInterest(interestForm.CalculateInterest());
accountInfoLabel.Text = savingsAccount.toString();
savingsAccount.Interest(interestForm.interestRate);
accountInfoLabel.Text = savingsAccount.toString();
}
}
}
最后,这是我的 InterestForm.cs 代码,用户可以在其中在 NumericUpDown 控件中输入术语和比率。
namespace Assignment_6_third_attempt
{
public partial class InterestForm : Form
{
private Account account = new Account();
//private double accountBalance;
public double interestRate = 0.0;
public InterestForm()
{
InitializeComponent();
}
public InterestForm(double accountBalance) : this()
{
//InitializeComponent();
account.AccountBalance = accountBalance;
}
private void addInterestButton_Click(object sender, EventArgs e)
{
double interestRate = double.Parse(interestUpDown.Text);
CalculateInterest();
this.Close();
}
public double CalculateInterest()
{
//A = P(1 + rt)
double accountBalance = account.AccountBalance;
double interestRate = (double)interestUpDown.Value;
double term = (double)termUpDown.Value;
double estimateInterest = (accountBalance * (1 + (interestRate * term)));
return estimateInterest;
}
}
}
最佳答案
编辑:
除了提到的所有 原始问题外,您似乎混淆了 interestRate
的范围private
字段 interestRate
局部变量在这里:
private void addInterestButton_Click(object sender, EventArgs e)
{
double interestRate = double.Parse(interestUpDown.Text); //this is local variable!!
CalculateInterest();
this.Close();
}
请注意,您使用本地 interestRate
,不是你的类(class)'interestRate
.同样,要注意变量的范围。局部变量不能全局访问,如果在局部方法中有相同的变量名,则必须将其与使用 this
的全局变量(类'字段)区分开来关键字(this.VariableName
是字段,但 VariableName
是本地的)。
在您上面的例子中,只需使用 class
领域 interestRate
而不是定义新的局部变量 interestRate
:
private void addInterestButton_Click(object sender, EventArgs e)
{
interestRate = double.Parse(interestUpDown.Text); //remove the double
CalculateInterest();
this.Close();
}
原文:
setter
和 getter
的 InterestRate
似乎...不对称:
double InterestRate
{
get { return interestForm.interestRate ; } //you get from other form
set { interestRate = interestForm.interestRate; } //and you set from other form
}
你得到 interestForm.interestRate
来自其他表格并将其设置为 interestRate
在你的Form
但你从不使用本地 interestRate
.将其更改为:
double InterestRate
{
get { return interestRate ; }
set { interestRate = value; }
}
您的 Interest
也是如此:
public double Interest(double amount)
{
InterestRate = interestForm.interestRate;
return InterestRate;
}
您再次使用您的私有(private) Form
除了被构造之外,它在类中未被使用。使用你的 amount
相反:
public double Interest(double amount)
{
InterestRate = amount; //change into this
return InterestRate;
}
现在,还要注意:
private void interestButton_Click(object sender, EventArgs e)
{
InterestForm interestForm = new InterestForm(savingsAccount.AccountBalance);
interestForm.ShowDialog();
savingsAccount.AddInterest(interestForm.CalculateInterest());
accountInfoLabel.Text = savingsAccount.toString();
savingsAccount.Interest(interestForm.interestRate);
accountInfoLabel.Text = savingsAccount.toString();
}
你有 InterestForm
在那里声明,但它是一个 new
InterestForm
, 这不是你的 private
InterestForm
在你的SavingAccount
.简而言之,InterestForm
你声明和InterestForm
在你的SavingAccount
是两个不同的表单实例,尽管它们共享相同的名称 interestForm
.查看访问修饰符 - 不是实例的名称 - 以了解您的 object
的范围.
也就是说,上面的设计使用非字段InterestForm
填满你的兴趣就可以了。我什至会说,使用 private InterestForm
不需要。您只需要将值传递给外部 InterestForm
有你的SavingAccount
实例,不创建私有(private) InterestForm
为你的 SavingAccount
关于c# - InterestRate 正在返回 0,我使用的引用来自另一个 Form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612680/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: template pass by value or const reference or…? 以下对于将函数
我用相同的参数列表重载了一个运算符两次。但返回类型不同: T& operator()(par_list){blablabla} const T& operator()(par_list){bla
假设我有实现接口(interface) I 的 Activity A。我的 ViewModel 类 (VM) 持有对实现接口(interface) I 的对象的引用: class A extends
PHP 如何解释 &$this ?为什么允许? 我遇到了以下问题,这看起来像是 PHP 7.1 和 7.2 中的错误。它与 &$this 引用和跨命名空间调用以及 call_user_func_arr
谁能解释一下下面“&”的作用: class TEST { } $abc =& new TEST(); 我知道这是引用。但是有人可以说明我为什么以及什么时候需要这样的东西吗?或者给我指向一个对此有很好解
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 C++ 引用 vs 指针 引用很容易与指针混淆,它们之间有三
目录 引言 背景 结论 引言 我选择写C++中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受是因为我主持过很多C++的面试,并且我很少
Perl 中的引用是指一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至函数,可以应用在程序的任何地方 创建引用 定义变量的时候,在变量名前面加个 \,就得到了这个变量的一个引用 $sc
我编写了一个将从主脚本加载的 Perl 模块。该模块使用在主脚本中定义的子程序(我不是维护者)。 对于主脚本中的一个子例程,需要扩展,但我不想修补主脚本。相反,我想覆盖我的模块中的函数并保存对原始子例
我花了几个小时试图掌握 F# Quotations,但我遇到了一些障碍。我的要求是从可区分的联合类型中取出简单的函数(只是整数、+、-、/、*)并生成一个表达式树,最终将用于生成 C 代码。我知道使用
很多时候,问题(尤其是那些标记为 regex 的问题)询问验证密码的方法。似乎用户通常会寻求密码验证方法,包括确保密码包含特定字符、匹配特定模式和/或遵守最少字符数。这篇文章旨在帮助用户找到合适的密码
我想通过 MIN 函数内的地址(例如,C800)引用包含文本的最后一个单元格。你能帮忙吗? Sub Set_Formula() ' ----------------------------- Dim
使用常规的 for 循环,我可以做类似的事情: for (let i = 0; i < objects.length; i++) { delete objects[i]; } 常规的 for-
在 Cucumber 中,您定义了定义 BDD 语法的步骤;例如,您的测试可能有: When I navigate to step 3 然后你可以定义一个步骤: When /^I navigate t
这是什么UnaryExpression的目的,以及应该怎样使用? 最佳答案 它需要一个 Expression对象并用另一个 Expression 包裹它.例如,如果您有一个用于 lambda 的表达式
给出以下内容 $("#identifier div:first, #idetifier2").fadeOut(300,function() { // I need to reference jus
我不知道我要找的东西的正确术语,但我要找的是一个完整的引用,可以放在双引号之间的语句,比如 *, node()、@* 以及所有列出的 here加上任何其他存在的。 我链接到的答案提供了一些细节,但还
This question's answers are a community effort。编辑现有答案以改善此职位。它当前不接受新的答案或互动。 这是什么? 这是常见问答的集合。这也是一个社区Wi
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
考虑下一个代码: fn get_ref(slice: &'a Vec, f: fn(&'a Vec) -> R) -> R where R: 'a, { f(slice) } fn m
我是一名优秀的程序员,十分优秀!