如何将此Delphi集合代码转换为C#?
我有下面的Delphi代码,它定义了一个集合,然后是一个简单的if语句,用于检查集合类型的传递值是否在某些值范围内如何将此Delphi集合代码转换为C#?,c#,delphi,set,C#,Delphi,Set,我有下面的Delphi代码,它定义了一个集合,然后是一个简单的if语句,用于检查集合类型的传递值是否在某些值范围内 TOverwriteMode = (omNone, omDateAndSize, omDateOrSize, omDate, omSize, omForce); ... if OverwriteMode in [omDateAndSize, omDateOrSize, omDate, omSize] then begin end; 我已经使用enum将其转换为C#,但是用于检
TOverwriteMode = (omNone, omDateAndSize, omDateOrSize, omDate, omSize, omForce);
...
if OverwriteMode in [omDateAndSize, omDateOrSize, omDate, omSize] then
begin
end;
我已经使用enum
将其转换为C#,但是用于检查值的代码现在由if或语句组成,这对我来说似乎有点冗长
public enum FileOverwriteMode
{
None,
DateAndSize,
DateOrSize,
Date,
Size,
Force,
}
...
if ((overwriteMode == FileOverwriteMode.DateAndSize) ||
(overwriteMode == FileOverwriteMode.DateOrSize) ||
(overwriteMode == FileOverwriteMode.Date) ||
(overwriteMode == FileOverwriteMode.Size))
{
}
有没有一种方法可以使用某种C#集等价物来简化它?您可以尝试以下方法
FileOverwriteMode overwriteMode = FileOverwriteMode.DateAndSize;
if (new HashSet<FileOverwriteMode>
{
FileOverwriteMode.DateAndSize,
FileOverwriteMode.DateOrSize,
FileOverwriteMode.Date,
FileOverwriteMode.Size
}.Contains(overwriteMode))
{
}
FileOverwriteMode overwriteMode=FileOverwriteMode.DateAndSize;
if(新哈希集)
{
FileOverwriteMode.DateAndSize,
FileOverwriteMode.DateOrSize,
FileOverwriteMode.Date,
FileOverwriteMode.Size
}.Contains(覆盖模式))
{
}
好吧,你可以做:
private static readonly HashSet<FileOverWriteMode> ValidOverwriteModes
= new HashSet<FileOverWriteMode>
{
FileOverwriteMode.DateAndSize, FileOverwriteMode.DateOrSize,
FileOverwriteMode.Date, FileOverwriteMode.Size,
};
...
if (ValidOverwriteModes.Contains(overwriteMode))
{
// ...
}
private static readonly HashSet validverwritemodes
=新哈希集
{
FileOverwriteMode.DateAndSize,FileOverwriteMode.DateOrSize,
FileOverwriteMode.Date,FileOverwriteMode.Size,
};
...
if(ValidOverwriteModes.Contains(overwriteMode))
{
// ...
}
(重命名validverwritemodes
取决于它的真正含义。)我原以为它会是HashSet,但不知道该怎么做。我喜欢内联创建,但是John的回答只是偷偷地告诉我,因为它会被检查很多次,所以已经创建了它会有所帮助。谢谢Jon,这很好。我只需要在readonly之后添加HashSet就可以编译了,这很好!(对名字输入错误表示歉意!)@Pauk:Doh-这是因为之前有var
在那里:)将把它编辑到答案中。