Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时输入枚举_C#_Dynamic_Parameters_Enums_Runtime - Fatal编程技术网

C# 在运行时输入枚举

C# 在运行时输入枚举,c#,dynamic,parameters,enums,runtime,C#,Dynamic,Parameters,Enums,Runtime,我有一个方法GenerateOutput,它打印字符串列表。该方法将多个枚举作为参数,并根据在方法中输入的标志输出结果。我知道枚举是为编译时设计的,但是否可以根据用户在程序中选择的选项在运行时更改输出? 基本上,我有各种复选框来表示可能的枚举。当用户选择一个选项时,该标志应作为参数添加到GenerateOutput方法中。这能做到吗?谢谢我认为您想要做的(我不确定是否完全理解您的问题)是在运行时建立一个枚举值以传递到函数中 假设使用[flags]属性指定枚举: [flags] public en

我有一个方法
GenerateOutput
,它打印字符串列表。该方法将多个枚举作为参数,并根据在方法中输入的标志输出结果。我知道枚举是为编译时设计的,但是否可以根据用户在程序中选择的选项在运行时更改输出?
基本上,我有各种复选框来表示可能的枚举。当用户选择一个选项时,该标志应作为参数添加到
GenerateOutput
方法中。这能做到吗?谢谢

我认为您想要做的(我不确定是否完全理解您的问题)是在运行时建立一个枚举值以传递到函数中

假设使用[flags]属性指定枚举:

[flags]
public enum TestEnumerations
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 4,
    //etc
}
然后你可以这样做:

// In checkbox handlers, e.g.
tEnums |= TestEnumerations.Value1;

// Where you call the method
GenerateOutput(tEnums);
或者,正如Francisco在评论中所建议的那样,创建一个列表(如果您只希望每个枚举值出现一次,则创建一个哈希集):


我认为您想要做的(我不确定我是否完全理解您的问题)是在运行时建立一个Enum值以传递到函数中

假设使用[flags]属性指定枚举:

[flags]
public enum TestEnumerations
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 4,
    //etc
}
然后你可以这样做:

// In checkbox handlers, e.g.
tEnums |= TestEnumerations.Value1;

// Where you call the method
GenerateOutput(tEnums);
或者,正如Francisco在评论中所建议的那样,创建一个列表(如果您只希望每个枚举值出现一次,则创建一个哈希集):


请给出GenerateOutput函数的示例/代码。这只是测试代码,可以让它正常工作。该方法只是
void GenerateOutput(TestEnumerations tEnums)
并将
tEnums
值打印到控制台。我想在运行时输入多个十位数。为什么不输入多个十位数,用逗号或其他字符分隔,然后在方法中解析?比如:t1,t2,然后对每一个值使用string.split(','),然后使用Enum.Parse?你的意思是像void GenerateOutput(List tEnums)这样的东西吗?我还不太明白…谢谢你的帮助。抱歉,我不在dev机器旁,但我记得那是一堆console.writeline。问题是,此方法必须在无法修改参数的情况下工作,因此我需要按照Jackson Pope的回答使用
|=
。请给出生成输出函数的示例/代码。这只是测试代码,以使其工作。该方法只是
void GenerateOutput(TestEnumerations tEnums)
并将
tEnums
值打印到控制台。我想在运行时输入多个十位数。为什么不输入多个十位数,用逗号或其他字符分隔,然后在方法中解析?比如:t1,t2,然后对每一个值使用string.split(','),然后使用Enum.Parse?你的意思是像void GenerateOutput(List tEnums)这样的东西吗?我还不太明白…谢谢你的帮助。抱歉,我不在dev机器旁,但我记得那是一堆console.writeline。问题是,这个方法必须在不能修改参数的情况下工作,所以我需要按照Jackson Pope的回答使用
|=
。谢谢。我不知道你能做什么。应该可以了。只有当值是2的幂并且设置了[flags]属性时,它才会起作用。谢谢。我不知道你能做什么。这样就可以了。只有当值是2的幂并且设置了[flags]属性时,它才会起作用。