Как я преобразовал бы этот код Набора Delphi в C#?

У меня есть следующий код Delphi, который определяет набор и затем простое, если оператор, который проверяет, находится ли переданное значение типа набора в пределах определенных значений.

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

...

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

Я преобразовал его в C# с помощью enum, но код для проверки значения теперь состоит из if or оператор, который кажется немного долго обветренным мне.

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

...

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

Существует ли способ упростить, он с помощью некоторого C# установил эквивалентный?

6
задан Pauk 22 February 2010 в 11:45
поделиться

2 ответа

Если предполагается, что имя таблицы - city , а существующий первичный ключ - pk _ city , необходимо выполнить следующие действия:

ALTER TABLE city
DROP CONSTRAINT pk_city;

ALTER TABLE city
ADD CONSTRAINT pk_city PRIMARY KEY (city_id, buildtime, time);

Убедитесь в отсутствии записей, для которых time имеет значение NULL , в противном случае вы не сможете повторно создать ограничение.

-121--1155793-

Вы можете попробовать что-то вроде

FileOverwriteMode overwriteMode = FileOverwriteMode.DateAndSize;
if (new HashSet<FileOverwriteMode> 
    { 
        FileOverwriteMode.DateAndSize, 
        FileOverwriteMode.DateOrSize, 
        FileOverwriteMode.Date, 
        FileOverwriteMode.Size 
    }.Contains(overwriteMode))
{
}
-121--4293669-

Ну, вы можете сделать:

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

...

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

(Переименовать ValidOverwriteMode в зависимости от реального значения.)

8
ответ дан 10 December 2019 в 00:37
поделиться

Можно попробовать что-то вроде

FileOverwriteMode overwriteMode = FileOverwriteMode.DateAndSize;
if (new HashSet<FileOverwriteMode> 
    { 
        FileOverwriteMode.DateAndSize, 
        FileOverwriteMode.DateOrSize, 
        FileOverwriteMode.Date, 
        FileOverwriteMode.Size 
    }.Contains(overwriteMode))
{
}
2
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: