gpt4 book ai didi

c# - 如何制作抽象静态属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:52:44 24 4
gpt4 key购买 nike

我知道这可以通过使用接口(interface)为方法完成。但是接口(interface)不能有字段或静态属性(这无济于事,因为它会为实现该接口(interface)的所有类指定一个值)。我还可以为抽象类的属性设置默认值。但理想情况下,我想强制每个继承类实现这些属性的值。这些值仍然可以在抽象类级别的抽象方法中使用。

每个属性的好处:
- 抽象的;基类要求实现此属性,但未指定值。
- 静止的;每种实现类型只存储一个值,而不是每个对象。

public interface IPiece
{
readonly int Points;
readonly char Letter;
}

public abstract class Piece
{
public static readonly int Points;
public static readonly char Letter;
}

public class King : Piece, IPiece
{
public int Points = 0;
public int Letter = 'K';
}

最佳答案

解决这个问题的标准模式是:

public interface IPiece
{
int Points { get; }
char Letter { get; }
}

public class King : IPiece
{
public int Points => 0;
public char Letter => 'K';
}

根本不需要使用 static,因为 0K 是文字,因此(像 static) 每个类只有效存储一次。

另请注意,我已经删除了您的抽象类 - 它没有用处,因为其中没有逻辑。没有逻辑的抽象类在概念上等同于接口(interface)(您已经拥有),因此在这个阶段没有必要。

如果你真的想使用static那么你可以使用:

public class King : IPiece
{
private static int points = 0;
private static char letter = 'K';

public int Points => points;
public char Letter => letter;
}

但这并没有什么大的好处。

关于c# - 如何制作抽象静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640237/

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