C# 继承GUID的使用
有人能解释一下使用这种语法的目的吗:C# 继承GUID的使用,c#,guid,C#,Guid,有人能解释一下使用这种语法的目的吗: public ClassConstructor() : this(Guid.NewGuid(), 0, new List<Transaction>(), "") { } public类构造函数(): 此(Guid.NewGuid(),0,新列表(),“”) { } 代码如下所示: public BankAccount() : this(Guid.NewGuid(), 0, new List<Transaction>
public ClassConstructor() :
this(Guid.NewGuid(), 0, new List<Transaction>(), "")
{
}
public类构造函数():
此(Guid.NewGuid(),0,新列表(),“”)
{
}
代码如下所示:
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;
}
公共银行账户()
:此(Guid.NewGuid(),0,新列表(),“”)
{
_添加(新事务(0,0,“帐户已创建”,DateTime.Now));
}
公共银行帐户(Guid Id、十进制余额、IList事务、字符串customerRef)
{
AccountNo=Id;
_平衡=平衡;
_交易=交易;
_customerRef=customerRef;
}
这与写:
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;
}
公共银行账户()
{
AccountNo=Guid.NewGuid();
_余额=0;
_事务=新列表();
_customerRef=“”;
_添加(新事务(0,0,“帐户已创建”,DateTime.Now));
}
公共银行账户(Guid Id、十进制余额、IList交易、,
字符串customerRef)
{
AccountNo=Id;
_平衡=平衡;
_交易=交易;
_customerRef=customerRef;
}
这与写:
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;
}
公共银行账户()
{
AccountNo=Guid.NewGuid();
_余额=0;
_事务=新列表();
_customerRef=“”;
_添加(新事务(0,0,“帐户已创建”,DateTime.Now));
}
公共银行账户(Guid Id、十进制余额、IList交易、,
字符串customerRef)
{
AccountNo=Id;
_平衡=平衡;
_交易=交易;
_customerRef=customerRef;
}
下面的行称为构造函数初始值设定项
public ClassConstructor(): this(Guid.NewGuid(), 0, new List(), "")
无论何时调用无参数构造函数ClassConstructor()
它都会首先调用同一类的参数化构造函数this(Guid.NewGuid(),0,new List(),“”)
,然后调用ClassConstructor()的代码/主体
获得处理下面的行称为构造函数初始值设定项
public ClassConstructor(): this(Guid.NewGuid(), 0, new List(), "")
无论何时调用无参数构造函数ClassConstructor()
它都会首先调用同一类的参数化构造函数this(Guid.NewGuid(),0,new List(),“”)
,然后调用ClassConstructor()的代码/主体
得到处理@JasonEvans的答案实际上有点错。他把base
和这个混为一谈
您可以使用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;
}
}
公共类银行账户
{
//第一建造师
公共银行账户()
:此(Guid.NewGuid(),0,新列表(),“”)
{
_添加(新事务(0,0,“帐户已创建”,DateTime.Now));
}
//第二建造师
公共银行帐户(Guid Id、十进制余额、IList事务、字符串customerRef)
{
AccountNo=Id;
_平衡=平衡;
_交易=交易;
_customerRef=customerRef;
}
}
在您的示例中,第一个构造函数在自身执行之前将其调用委托给第二个构造函数。因此,在您的示例中,当调用默认构造函数时,BankAccount
get将使用一个空的事务列表进行初始化。在此之后,添加了第一个事务(“创建的帐户”)。@JasonEvans的答案实际上有点错误。他把base
和这个混为一谈
您可以使用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;
}
}
公共类银行账户
{
//第一建造师
公共银行账户()
:此(Guid.NewGuid(),0,新列表(),“”)
{
_添加(新事务(0,0,“帐户已创建”,DateTime.Now));
}
//第二建造师
公共银行帐户(Guid Id、十进制余额、IList事务、字符串customerRef)
{
AccountNo=Id;
_平衡=平衡;
_交易=交易;
_customerRef=customerRef;
}
}
在您的示例中,第一个构造函数在自身执行之前将其调用委托给第二个构造函数。因此,在您的示例中,当调用默认构造函数时,BankAccount
get将使用一个空的事务列表进行初始化。在此之后,将添加第一笔交易
(“创建的帐户”)。这有什么好处。。在什么场景下我们应该这样使用?@user3615920您使用它来避免重复初始化逻辑。一个构造函数(通常是参数最多的构造函数)包含所有/大多数构造函数通用的逻辑。其他构造函数将初始化委托给这个公共构造函数。这有什么好处。。在什么场景下我们应该这样使用?@user3615920您使用它来避免重复初始化逻辑。一个构造函数(通常是参数最多的构造函数)包含所有/大多数构造函数通用的逻辑。其他构造函数将初始化委托给此公共构造函数。