Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承GUID的使用_C#_Guid - Fatal编程技术网

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您使用它来避免重复初始化逻辑。一个构造函数(通常是参数最多的构造函数)包含所有/大多数构造函数通用的逻辑。其他构造函数将初始化委托给此公共构造函数。