Я полагаю, что проблема, с которой вы столкнулись, связана с
$('#myCarousel').carousel({
interval: 3000,
pause: null,
})
Вы передаете значение NULL в качестве параметра, когда он ожидает строку или логическое значение, вы можете увидеть эту ошибку из консоли.
(Ctrl + shift + I) на Chrome
Это должно быть
[114 ]
$('#myCarousel').carousel({
interval: 3000,
pause: false,
})
В Вашем текущем коде будет сказано, идет ли точно "дождь и грозовой". Чтобы узнать, идет ли "дождь и грозовой и возможно что-то еще", Вам нужно:
if ((currentWeather.Type & _badWeatherTypes) == _badWeatherTypes)
Чтобы узнать, идет ли "дождь или грозовой, и возможно что-то еще", Вам нужно:
if ((currentWeather.Type & _badWeatherTypes) != 0)
РЕДАКТИРОВАНИЕ (для полноты):
Было бы хорошо использовать FlagsAttribute
, т.е. украсьте тип [Flags]
. Это не необходимо ради этой поразрядной логики, но влияет как ToString()
ведет себя. Компилятор C# игнорирует этот атрибут (по крайней мере в данный момент; спецификация C# 3.0 не упоминает это), но это обычно - хорошая идея для перечислений, которые являются эффективно флагами, и это документирует надлежащее использование типа. В то же время конвенция состоит в том что при использовании флагов, Вы pluralise перечислимое имя - таким образом, Вы изменили бы его на WeatherTypes
(потому что любое фактическое значение является эффективно 0 или больше погодными типами).
Это также стоило бы думать о том, что "Солнечный" действительно означает. Это в настоящее время получало значение 0, что означает, что это - отсутствие всего остального; у Вас не могло быть его солнечный и льющийся дождем одновременно (который физически возможен, конечно). Не пишите код для запрещения радуг!;) С другой стороны, если в Вашем реальном варианте использования Вы действительно хотите значение, что означает "отсутствие всех других значений", затем Вы в порядке.
используйте FlagsAttribute. Это позволит Вам использовать перечисление в качестве небольшой маски.
Необходимо использовать атрибут Флагов на перечислении. Кроме того, также необходимо протестировать, чтобы видеть, установлен ли конкретный флаг:
(currentWeather.Type & WeatherType.Thunderstorm == WeatherType.Thunderstorm)
Это протестирует если currentWeather. Тип имеет WeatherType. Флаг Thunderstorm установлен.
Я не ограничил бы себя разрядным миром. Перечисления и побитовые операторы, как Вы узнали, не то же самое. Если бы Вы хотите решить это использование побитовые операторы, я придерживался бы просто их, т.е. не беспокоюсь перечислениями. Однако я был бы что-то как следующее:
WeatherType[] badWeatherTypes = new WeatherType[]
{
WeatherType.Thunderstorm,
WeatherType.Raining
};
if (Array.IndexOf(badWeatherTypes, currentWeather.Type) >= 0)
{
return false;
}
Необходимо использовать [Флаги] атрибут (проверка здесь) на перечислении; затем можно использовать поразрядно и проверять на отдельные соответствия.