zak100 Ответов: 2

Проблема с типом данных enum в C#


Привет,
Следующая программа не компилируется
using System;

namespace enum2
{
    class Program
{
    private const string V = "\n";

    private enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
    static void Main(string[] args)
    {

        Console.Write(value: Days.Sun + V);
        Console.Write(value: Days.Sun + V);
        Days.Sun = (int)  10;//error here
        Console.Write(value: Days.Mon + V);
        Console.ReadKey();
    }
}
}


Ошибка есть
left hand-side of an assignment must be variable, property or indexer


Что я уже пробовал:

Я попытался бросить значение

2 Ответов

Рейтинг:
8

0x01AA

Days.Sun = (int) 10;//error here
Подумайте о том, что вы пытаетесь сделать здесь...

"Дни" - это перечисление, а "Солнце" - одно из значений перечисления... Совершенно непонятно...

Тебе нравится, когда мэбай делает что-то подобное?

int day= (int)Days.Sun


В любом случае, чего вы ожидаете от значения '10' из перечисления в диапазоне 0..6?

Хорошо, с другой стороны, если вам нравится/нужно иметь определенное отношение к вашему перечислению, вы можете сделать что-то вроде этого

enum Days { Sun= 4, Mon= 5, Tue= 6, Wed= 7, Thu= 8, Fri=9, Sat=10 };


zak100

Привет,
Спасибо. На самом деле я пытался сделать что-то похожее, но вне фигурных скобок, которые вы делаете внутри фигурных скобок. Это означает, что мы не можем назначить вне фигурных скобок?

Зульфи.

0x01AA

И еще спасибо. Вот этот Days.Sun = (int) 10;вы не можете сделать ни внутри, ни снаружи фигурных скобок. Единственный способ присвоить определенное значение элементу перечисления-это определить его во время определения перечисления. В этом случае enum Days{Sun= 4, ....
[Редактировать]
Чтобы сделать его более ясным: как только он определен, как enum Days{Sun= 4, ... вы больше не можете изменить его во время выполнения.

Рейтинг:
1

Gerry Schmitz

Дни.Солнце, для ваших целей, является "константой"; значением перечисления; которое может появиться только с правой стороны.


0x01AA

Да а 5