присваивать значение перечисления перечислению на основе условия в c # - PullRequest
0 голосов
/ 17 июля 2009

У меня есть класс, и я объявил в нем перечисление вроде

public enum file_type {readonly, readwrite, system}

Теперь, основываясь на условии, я хочу установить для перечисления file_type значение, подобное

if("file is markedreadonly")
   file_type = readonly;

Возможно ли это сделать в C #

Ответы [ 4 ]

6 голосов
/ 17 июля 2009

При записи file_type = readonly вы пытаетесь изменить определение Enum во время выполнения, что недопустимо.

Создайте переменную типа file_type и установите ее только для чтения.

Также, пожалуйста, используйте стандарты имен .NET для именования вашей переменной и типов. Кроме того, для Enums в качестве первого значения рекомендуется использовать перечисление None.

public enum FileType { None, ReadOnly, ReadWrite, System}

FileType myFileType = FileType.None;

if( //check if file is readonly)
    myFileType = FileType.ReadOnly;
1 голос
/ 17 июля 2009

Ваш синтаксис неправильный.file_type - это тип, а не переменная.Кроме того, вам нужен @readonly, поскольку readonly - зарезервированное слово.

0 голосов
/ 17 июля 2009

Вы можете определенно сделать это, почти так, как вы указали. Примечание. Я изменил корпус, чтобы он соответствовал принятым правилам кодирования C #.

<code>
public enum FileType { ReadOnly, ReadWrite, System }</p>

<p>...</p>

<p>FileType fileType;
FileInfo file = new FileInfo("C:\full\path\to\file");
if (file.IsReadOnly)
    fileType = FileType.ReadOnly

Также проверьте перечисления System.IO.FileAccess и System.IO.FileAttribute. Они могут предоставить вам стандартную реализацию, которая более подходит. Лично я предпочитаю использовать системный тип, а не «кататься самостоятельно» - меньше работы и его легче понять другим программистам.

НТН

0 голосов
/ 17 июля 2009

Сами перечисления ведут себя больше как типы. Вам нужна переменная типа file_type , которую можно затем присвоить file_type.readonly

public enum FileType
{
    ReadOnly,
    ReadWrite,
    System
}

FileType ft;

if (...) ft = FileType.ReadOnly;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...