gpt4 book ai didi

c# - 我应该如何在类层次结构中链接构造函数?

转载 作者:太空狗 更新时间:2023-10-29 20:18:03 24 4
gpt4 key购买 nike

我们有以下类层次结构:

public class Base
{
public Base()
{
// do generic initialization
}

public Base(SomeClass param1) : this()
{
// init properties that require param1
}

public Base(SomeClass param1, OtherClass param2) : this(param1)
{
// init properties that require param2
}

// ...
}

public class Derived : Base
{
public Derived()
{
// do custom initialization
}

public Derived(SomeClass param1) : this() // ???
{
// do custom initialization using param1
}

public Derived(SomeClass param1, OtherClass param2) : this(param1) // ???
{
// do custom initialization using param2
}

// ...
}

我们将要求Derived 运行两者 它自己的初始化例程、向上链以及基类中的相应初始化例程。我们如何在不重复代码/运行某些构造函数两次的情况下链接构造函数?

最佳答案

在派生类中,将参数最少的构造函数链接到参数最多的构造函数,然后将参数最多的派生构造函数链接到基类。像这样:

public class Base 
{
public Base() : this(null, null)
{
}
public Base(SomeClass param1) : this(param1, null)
{
}
public Base(SomeClass param1, OtherClass param2)
{
if (param1 != null)
{
// initialise param1
}
if (param2 != null)
{
// initialise param2
}
}
}

public class Derived : Base
{
public Derived() : this(null, null)
{
}
public Derived(SomeClass param1) : this(param1, null)
{
}
public Derived(SomeClass param1, OtherClass param2) : base(param1, param2)
{
}
}

根据上下文,最好使用 default(T) 而不是 null 来指示缺失/默认值。

关于c# - 我应该如何在类层次结构中链接构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com