我将如何转换特尔斐设置代码为C#? [英] How would I convert this Delphi Set code to C#?

查看:145
本文介绍了我将如何转换特尔斐设置代码为C#?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下Delphi代码定义一组,然后一个简单的,如果来检查,如果集合类型的传递值落在一定值范围内声明。

I've got the following Delphi code that defines a set and then a simple if statement that checks if a passed value of the set type falls within certain values.

TOverwriteMode = (omNone, omDateAndSize, omDateOrSize, omDate, omSize, omForce);

...

if OverwriteMode in [omDateAndSize, omDateOrSize, omDate, omSize] then
begin
end;



我是用转换为C#的枚举,但现在检查值的代码包含一个 if或声明,似乎有点长篇大论给我。

I've converted it to C# using an enum, but the code for checking the value now consists of an if or statement which seems a bit long winded to me.

public enum FileOverwriteMode
{
    None,
    DateAndSize,
    DateOrSize,
    Date,
    Size,
    Force,
}

...

if ((overwriteMode == FileOverwriteMode.DateAndSize) || 
    (overwriteMode == FileOverwriteMode.DateOrSize) || 
    (overwriteMode == FileOverwriteMode.Date) || 
    (overwriteMode == FileOverwriteMode.Size))
{
}

有没有办法使用一些C#一套相当于简化呢?

Is there a way to simplify it using some kind of C# set equivalent?

推荐答案

好了,你可以这样做:

private static readonly HashSet<FileOverWriteMode> ValidOverwriteModes
    = new HashSet<FileOverWriteMode>
{
    FileOverwriteMode.DateAndSize, FileOverwriteMode.DateOrSize,
    FileOverwriteMode.Date, FileOverwriteMode.Size,
};

...

if (ValidOverwriteModes.Contains(overwriteMode))
{
    // ...
}

(重命名 ValidOverwriteModes 视的真正含义是什么。 )

(Rename ValidOverwriteModes depending on what the real meaning is.)

这篇关于我将如何转换特尔斐设置代码为C#?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆