我是初学者。我正在尝试编写一个程序,其中有一个颜色类可以执行各种操作(红色,绿色,蓝色和alpha值)以获得颜色的灰度值。但我不知道如何将值分配给Base类的成员变量 首先,我创建一个构造函数,它采用像这样的红色,蓝色,绿色和alpha值
private byte red;
private byte green;
private byte blue;
private byte alpha;
public Color(byte red, byte green, byte blue, byte alpha)
{
this.red = red;
this.green = green;
this.blue = blue;
this.alpha = alpha;
}
然后我宣布一个颜色变量(我希望人们能够输入值)
Color color = new Color(
Convert.ToByte(
Console.ReadLine()
), Convert.ToByte(
Console.ReadLine()
), Convert.ToByte(
Console.ReadLine()
), 255
);
是不是?红色变量是否会分配给用户输入的值?
如果是的,我怎样才能在用户输入之前询问用户?
例如,在输入红色值之前,我会问他们:
输入您的红色值
然后我会问他们
输入您的绿色值
他们继续输入他们的价值观......等等......
另一个问题:我还想在颜色类中创建方法以从颜色对象中获取(检索)红色,绿色,蓝色值。我创造了它们,但我不知道它是否正确。你可以帮我查一下吗?
public byte Getred(byte red)
{
return red;
}
public byte Getgreen(byte green)
{
return green;
}
public byte Getblue (byte blue)
{
return blue;
}
public byte Getalpha(byte alpha)
{
alpha = 255;
return alpha;
}
答案 0 :(得分:2)
您可以使用Console.WriteLine
向用户显示提示消息并从中接收输入。
Console.WriteLine("Please enter your red value: ");
byte redValue = Convert.ToByte(Console.ReadLine());
Console.WriteLine("Please enter your green value: ");
byte greenValue = Convert.ToByte(Console.ReadLine());
Console.WriteLine("Please enter your blue value: ");
byte blueValue = Convert.ToByte(Console.ReadLine());
Color color = new Color(redValue, greenValue, blueValue, 255);
如果您希望它们是私有的,并且只通过特定方法公开它们,那么获取值的方法是正确的。
编辑:
如果您只想允许在类中更改类字段,但允许其他调用者只获取值,而不是设置它,那么您可以使用属性,这将使您免于编写那些{{1方法。
get
答案 1 :(得分:1)
对于C#,您可以使用属性而不是像
这样的getmethods class MyColor
{
private byte red;
private byte green;
private byte blue;
private byte alpha;
public MyColor(byte red, byte green, byte blue, byte alpha)
{
this.red = red;
this.green = green;
this.blue = blue;
this.alpha = alpha;
}
public byte Red
{
get
{
return this.red;
}
}
}
class Program
{
static void Main(string[] args)
{
byte red;
while (true)
{
Console.WriteLine("Input a byte in the range of 0 to 255 - for Red:");
string line = Console.ReadLine();
if (line.Length > 3 || !byte.TryParse(line, out red))
{
Console.WriteLine("Invalid Entry - try again");
Console.WriteLine("Input a byte in the range of 0 to 255 - for Red:");
}
else
{
break;
}
}
}
}