求高人给看看这段程序有什么不对

来源:百度知道 编辑:UC知道 时间:2024/06/16 17:15:58
using System;

enum Color
{
Red, Yellow, Blue, Green, Purple, Black, White
};

class Test
{

public static void Main(){

Color[] color_arr=new Color[7];

for (int i = 0; i <= color_arr.Length; i++)
{
Console.WriteLine(color_arr[i]);
}

}
}
1.确实溢出了。
2.输出确实都是RED
3.我想把所有颜色都输出出来该怎么修改呢?
4.可以加分
5.9楼的。。如果还要一个个的赋值不是没必要用枚举了?
6.最新:我想问的问题是为什么数组的输出只有RED?怎么才能让数组的元素是所有颜色?只能一个个的去重新赋值吗?

主要问题出在这里.
一.溢出问题.
提示:color_arr.Length=多少?明摆着=7嘛.
从0到7是8个数据.当然会溢出了.去掉这个=号即可.如下
for (int i = 0; i < color_arr.Length; i++)
二.全是RED的问题.
那是因为你这里的Color[] color_arr=new Color[7]; 只是给它分配了内存空间,没给初值.所以输出默认的枚举值的第一位.那么怎么写才对呢?如下:
string[] color_arr = Enum.GetNames(typeof(Color));

for (int i = 0; i < color_arr.Length; i++)
{
Console.WriteLine(color_arr[i]);
}

如果你想返回你定义的类型.这里可是这样写:
Color[] color_arr = (Color[])Enum.GetValues(typeof(Color));

我想楼主主要是需要color_arr的值正确.这样应该没问题了.

enum Color:uint
{
Red, Yellow, Blue, Green, Purple, Black, White
}

class Test
{

public static void Main()
{

Color[] color_arr = new Color[7];

for (int i = 0; i < color_arr.Length; i++)
{
Console.WriteLine(Enum.GetName(typeof(Color), i)