【发布时间】:2018-07-11 11:16:15
【问题描述】:
我正在使用视频教程来尝试学习 C#;我认为它误导了我。我哪里错了?
namespace BankAcct
{
class Acct
{
private decimal balance;
private string acctnum;
// two constructor methods
public Acct()
{
acctnum = "";
balance = 0;
}
public Acct(string anum, decimal bal)
{
acctnum = anum;
bal = balance;
}
} // end of Acct class
// derived classes
class CheckingAcct : Acct
{
// constructor
public CheckingAcct(string anum, decimal bal) : base(acctnum, balance)
{
balance = bal;
acctnum = anum;
}
}
class Program
{
static void Main(string[] args)
{
Acct asacct = new Acct("666", 23.23);
Console.ReadKey();
}
}
}
我正在使用 Visual Studio 社区。当它试图调用派生类中的构造函数时,它会爆炸;关于无法访问私有数据成员的一些事情。我尝试将数据项公开,但无济于事。
【问题讨论】:
-
“它爆炸了”和“某事关于”不是表达错误的好方法。请在您的问题中引用 precise 错误消息(并指出这是一个编译错误,我相信在这种情况下是这样)。您可以从 Visual Studio 复制/粘贴它。但从根本上说,您不需要
CheckingAcct构造函数中的那些无效赋值 - 您已经链接到Acct构造函数,该构造函数正在分配给从参数中获取值的字段。 -
(我也强烈建议使用
Account而不是Acct,以及更完整的参数名称。如果视频给出了这些缩写名称,这可能表明值得尝试查找一个不同的...缩写有时有它们的位置,但绝对不是在这里。) -
您不能从派生类写入私有变量。
-
@MongZhu 这不是对保护级别的误解,而是对构造函数链接的误解。呃……其实两者都有。
标签: c# visual-studio