gpt4 book ai didi

c# - 在类构造函数中初始化枚举的正确方法

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

我可能以错误的方式看待枚举,但我想确保我对如何使用它们有正确的理论。

假设我们有一个名为 Colour 的枚举。

enum Colour { Red, Green, Blue };

红色绿色和蓝色由 0-255 值表示。我正在尝试在类形状中初始化此枚举,但我不太确定该怎么做。

public class Shape
{

Colour colour;

public Shape(Colour c)
{
//Some attempts at initialization.


//Treating It like an object
this.colour =
c{
255,255,255
};

//Again
this.colour.Red = c.Red
this.colour.Blue = c.Blue
this.colour.Green = c.Green

Colour.red = c.red?


}
}
}

就我对枚举的看法而言,我可能离题太远了。谁能给我一些指示?

最佳答案

在这种情况下,您可能希望 Color 是 struct 而不是枚举。在 C# 中,枚举是单值构造,但您具有三个值(红色、绿色和蓝色)。以下是我可能会做的:

public struct Colour 
{
private byte red;
private byte green;
private byte blue;

public Colour(byte r, byte g, byte b)
{
this.red = r;
this.green = g;
this.blue = b;
}
}

public class Shape
{
public Colour Colour { get; private set; }

public Shape(Colour c)
{
this.Colour = c;
}
}

然后当您创建形状对象时:

var shape = new Shape(new Colour(203, 211, 48));

编辑:正如 Chris 在评论中指出的那样,您可以简单地使用框架提供的 System.Drawing.Color 结构。上面的示例将简化为:

using System.Drawing;

public class Shape
{
public Color Colour { get; private set; }

public Shape(Color c)
{
this.Colour = c;
}
}

var shape = new Shape(Color.FromArgb(203, 211, 48));

关于c# - 在类构造函数中初始化枚举的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663165/

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