任何人都可以解释使用如下语法的目的:
public ClassConstructor() :
this(Guid.NewGuid(), 0, new List<Transaction>(), "")
{
}
代码如下所示:
public BankAccount()
: this(Guid.NewGuid(), 0, new List<Transaction>(), "")
{
_transactions.Add(new Transaction(0m, 0m, "account created", DateTime.Now));
}
public BankAccount(Guid Id, decimal balance, IList<Transaction> transactions, string customerRef)
{
AccountNo = Id;
_balance = balance;
_transactions = transactions;
_customerRef = customerRef;
}
答案 0 :(得分:4)
以下一行称为constructor initializer
public ClassConstructor(): this(Guid.NewGuid(), 0, new List(), "")
使用上面的行,每当调用参数less constructor ClassConstructor()
时,它首先调用同一个类this(Guid.NewGuid(), 0, new List(), "")
的参数化构造函数ClassConstructor
,然后调用{{1}的代码/正文得到处理
答案 1 :(得分:1)
base
与this
混合在一起。
您可以使用this
将构造函数调用委托给该类范围内的另一个构造函数:
public class BankAccount
{
// 1st constructor
public BankAccount()
: this(Guid.NewGuid(), 0, new List<Transaction>(), "")
{
_transactions.Add(new Transaction(0m, 0m, "account created", DateTime.Now));
}
// 2nd constructor
public BankAccount(Guid Id, decimal balance, IList<Transaction> transactions, string customerRef)
{
AccountNo = Id;
_balance = balance;
_transactions = transactions;
_customerRef = customerRef;
}
}
在你的例子中,第一个构造函数在它自己执行之前委托它调用第二个构造函数。因此,在您的示例中,当调用默认构造函数时,BankAccount
初始化为Transactions
的空列表。在此之后,添加了第一个Transaction
(&#34;创建的帐户&#34;)。
答案 2 :(得分:-1)
与写作相同:
public BankAccount()
{
AccountNo = Guid.NewGuid();
_balance = 0;
_transactions = new List<Transaction>();
_customerRef = "";
_transactions.Add(new Transaction(0m, 0m, "account created", DateTime.Now));
}
public BankAccount(Guid Id, decimal balance, IList<Transaction> transactions,
string customerRef)
{
AccountNo = Id;
_balance = balance;
_transactions = transactions;
_customerRef = customerRef;
}