Проблемы с получением Enum, чтобы сотрудничать со мной - PullRequest
0 голосов
/ 16 сентября 2009

У меня проблема с моим кодом, во время компиляции я получаю исключение. Кто-нибудь может мне помочь?

if (Page.IsPostBack != false)
            {
                System.Drawing.KnownColor enClr;
                System.Collections.Generic.List<System.Drawing.KnownColor> ColorList;
                ColorList.AddRange(Enum.GetValues(enClr.GetType()));

            }

Я пытаюсь следовать этому руководству в VB.Net, но я использую только C #, поэтому я стараюсь переводить по ходу, кто-нибудь может помочь?

Вот оригинальный код:

If Not IsPostBack Then
Dim enClr As System.Drawing.KnownColor
Dim clrs As New  _
System.Collections.Generic.List _
(Of System.Drawing.KnownColor)
clrs.AddRange(System.Enum.GetValues _
(enClr.GetType()))
DropDownList1.DataSource = clrs
DropDownList1.DataBind()

Ответы [ 3 ]

1 голос
/ 16 сентября 2009

Прежде всего сбивает с толку, в каком направлении вы пытаетесь перевести. Теги говорят C # для VB, но текст говорит VB для C #. Я предполагаю последнее. Имея это в виду, это:

If Not IsPostBack Then

и это:

if (Page.IsPostBack != false)

означает прямо противоположное. Ваш C # должен выглядеть так:

if (!IsPostBack)

Вам также необходимо обратить внимание на слово «Новое» в коде vb. Полная адаптация выглядит так:

if (!IsPostBack)
{
    DropDownList1.DataSource = System.Enum.GetValues(typeof (System.Drawing.KnownColor));
    DropDownList1.DataBind();
}

Наконец, еще одно исправление в вашей терминологии: ошибки времени компиляции не исключения. Исключения являются конструктом времени выполнения.

0 голосов
/ 16 сентября 2009

Похоже, мне нужен какой-то текст здесь ... Я думаю, что один из них подойдет для того, что вы хотите сделать, и я согласен с другими по поводу if (! This.IsPostBack) ...

if (!this.IsPostBack)
{
  //with LINQ
  System.Collections.Generic.List<System.Drawing.KnownColor> ColorList = new List<System.Drawing.KnownColor>();
  ColorList.AddRange(((System.Drawing.KnownColor[])System.Enum.GetValues(typeof(System.Drawing.KnownColor))).ToList());

  //with LINQ (more explicit)
  ColorList = new List<System.Drawing.KnownColor>();
  System.Drawing.KnownColor[] colors = (System.Drawing.KnownColor[])System.Enum.GetValues(typeof(System.Drawing.KnownColor));
  ColorList.AddRange(colors.ToList());

  //without
  ColorList = new List<System.Drawing.KnownColor>();
  colors = (System.Drawing.KnownColor[])System.Enum.GetValues(typeof(System.Drawing.KnownColor));
  foreach (System.Drawing.KnownColor color in colors)
  {
    ColorList.Add(color);
  }
}
0 голосов
/ 16 сентября 2009

Похоже, вы не создаете объект списка.

System.Collections.Generic.List<System.Drawing.KnownColor> ColorList;

Должно быть

System.Collections.Generic.List<System.Drawing.KnownColor> ColorList;
ColorList = New System.Collections.Generic.List<System.Drawing.KnownColor>();
...