根据c#中的条件为枚举指定枚举值

时间:2009-07-17 14:35:28

标签: c# enums

我有一个类,并且已经在其中声明了一个枚举,如

public enum file_type {readonly, readwrite, system}

现在基于我想要将enum file_type设置为类似

的值的条件
if("file is markedreadonly")
   file_type = readonly;

是否可以在c#

中这样做

4 个答案:

答案 0 :(得分:6)

通过编写file_type = readonly,您尝试在运行时更改Enum的定义,这是不允许的。

创建file_type类型的变量,然后将其设置为readonly。

另外,请使用.NET命名标准来命名变量和类型。此外,对于Enums,建议将'None'枚举作为第一个值。

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

FileType myFileType = FileType.None;

if( //check if file is readonly)
    myFileType = FileType.ReadOnly;

答案 1 :(得分:1)

你的语法错了。 file_type是一个类型,而不是一个变量。另外,你需要@readonly,因为readonly是一个保留字。

答案 2 :(得分:0)

枚举本身的行为更像是类型。您需要一个 file_type 类型的变量,然后您可以将其分配给 file_type.readonly

public enum FileType
{
    ReadOnly,
    ReadWrite,
    System
}

FileType ft;

if (...) ft = FileType.ReadOnly;

答案 3 :(得分:0)

你绝对可以做到这一点,几乎与你指出的完全一样。注意:我已更改外壳以符合已接受的C#编码指南。


public enum FileType { ReadOnly, ReadWrite, System }

...

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

另外,请查看System.IO.FileAccess和System.IO.FileAttribute枚举。它们可能为您提供更合适的标准实现。就个人而言,我更喜欢使用系统类型而不是“自己动手” - 减少工作量,让其他程序员更容易理解。

HTH