gpt4 book ai didi

c# - C#中抽象类中的私有(private)构造函数有什么用?

转载 作者:行者123 更新时间:2023-12-03 04:45:05 25 4
gpt4 key购买 nike

我在面试中面临以下问题。

Q1.Can we have a private constructor in the abstract class?

答案-是的,我给出了一个我们可以得到的答案,然后他再次问为什么以及私有(private)构造函数的用途是什么。我无法回答这个交叉问题。有人能解释一下吗?在 C# 中实际使用会有很大帮助。

最佳答案

我能想到两种用途:

首先,用于链接。您可能有多个 protected 构造函数,但希望在所有构造函数中执行公共(public)代码:

public abstract class Foo
{
protected Foo(string name) : this(name, 0)
{
}

protected Foo(int value) : this("", value)
{
}

private Foo(string name, int value)
{
// Do common things with name and value, maybe format them, etc
}
}

第二个用途是使唯一可能的派生类成为可以访问私有(private)成员的嵌套类。当我想要强制执行有限数量的派生类(通常通过基类公开实例)时,我曾使用过此方法

public abstract class Operation
{
public static readonly Operation Add { get; } = new AddOperation();
public static readonly Operation Subtract { get; } = new SubtractOperation();

// Only nested classes can use this...
private Operation()
{
}

private class AddOperation : Operation
{
...
}

private class SubtractOperation : Operation
{
...
}
}

关于c# - C#中抽象类中的私有(private)构造函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60415840/

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