Программирование - Условие с использованием ИЛИ и обратного регистра - PullRequest
2 голосов
/ 20 апреля 2011

Я использую C #, в моем коде есть условное утверждение.Мне нужно проверить ряд переменных o в последовательности ИЛИ.

Во-первых, мне нужно проверить, верно ли это выражение.

original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid & newCodec == "image/png" ||
original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid & newCodec == "image/gif"

Во-вторых, мне также нужно проверить ОбратноеКейс (надеюсь, я смогу выразить себя с помощью обратного кейса)

original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid & newCodec == "image/gif" ||
original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid & newCodec == "image/png" 

В данный момент я использую этот код (он работает).Но мне кажется, не очень элегантно, поэтому я хотел бы знать, если существует лучший способ сделать то же самое.Я довольно новичок в кодировании, буду признателен за ваши примеры.

Спасибо, ребята, за вашу помощь !!!!


// Clear New Image and add Transparent Background if codec input or optut allow trasparency.
if (original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid & newCodec == "image/png" ||
    original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid & newCodec == "image/gif" ||  
    original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid & newCodec == "image/gif" ||
    original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid & newCodec == "image/png")
{
    newImage.Clear(SD.Color.Transparent); // Apply Transparent Canvas.               
}
else
{
    // Translate htmlColor to a GDI+Color structure.
    SD.Color myColor = SD.ColorTranslator.FromHtml(backgroundColorHtml);
    // Clear Image and apply background color.
    newImage.Clear(myColor);
}

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Также будет работать следующее:

(original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid ||
 original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid) &&
(newCodec == "image/png" ||newCodec == "image/gif")
1 голос
/ 20 апреля 2011

Использование Parentheses ( ):

if ((original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid & (newCodec == "image/png" ||newCodec == "image/gif")) ||
    (original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid & (newCodec == "image/gif" ||newCodec == "image/png")))

или

if (((original.RawFormat.Guid == SD.Imaging.ImageFormat.Png.Guid)||
(original.RawFormat.Guid == SD.Imaging.ImageFormat.Gif.Guid))&
(newCodec == "image/png" ||newCodec == "image/gif"))
0 голосов
/ 20 апреля 2011

Вы могли бы сделать это так:

if (new [] { SD.Imaging.ImageFormat.Png.Guid, SD.Imaging.ImageFormat.Gif.Guid }.Contains(original.RawFormat.Guid)
    && Regex.IsMatch(newCodec, "^image/(png|gif)$")

Хотя в рабочем коде я бы немного разбил его на части:

var imageFormats = new [] { SD.Imaging.ImageFormat.Png.Guid, SD.Imaging.ImageFormat.Gif.Guid };
if (imageFormats.Contains(original.RawFormat.Guid) && Regex.IsMatch(newCodec, "^image/(png|gif)$"))
...