Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по C# и SQL

Flo Vock Ученик (146), на голосовании 6 месяцев назад
Что то я понять не могу, то-ли я даун, то ли что то не так с си шарп, короче, вот мой код:
день_РожденияDateTimePicker.Value = new DateTime( DateTime.Now .Year - 17);
Сегодня дата 27.02.24, отнимем 17 лет, получим примерно 27.02.2007

Так вот, этот код включается во время запуска формы, тобишь день_РожденияDateTimePicker принимает значение уже при запуске, так вот что пишет мне сам Visual Studio:

System.ArgumentOutOfRangeException: "Значение '01.01.0001 0:00:00' недопустимо для 'Value'. 'Value' должно лежать в диапазоне от 'MinDate' до 'MaxDate'.
Имя параметра: Value"

Вот мой диапазон для день_РожденияDateTimePicker:
MaxDate - 31.12.9998
MinDate - 01.01.1753
Код не должен себя так вести, так как все работает в рамках.

Еще один прикол:

У меня есть такой код:
private void день_РожденияDateTimePicker_ValueChanged(object sender, EventArgs e)
{
if (день_РожденияDateTimePicker.Value >= new DateTime( DateTime.Now .Year - 16 ))
{
MessageBox.Show("Допускаются студенты возрастом от 16 и более лет", "Ошибка");
}
}
Входящее значение для день_РожденияDateTimePicker является год: 1989-01-01
и какого то хера это условие выполняется, для си шарп 1989 год больше 2008 года
ПОМОГИТЕ дауну
Дополнен 7 месяцев назад
Нашел ответ, тупанул малясь. Короче, если вы и считаете разницу от года, то и присваивайте DateTimePicker компонент .Year, короче говоря, вот как должен выглядеть код, чтобы все работало:
private void день_РожденияDateTimePicker_ValueChanged(object sender, EventArgs e)
{

if (день_РожденияDateTimePicker.Value.Year > DateTime.Now .Year - 16 || день_РожденияDateTimePicker.Value.Year < DateTime.Now .Year - 45)
{
MessageBox.Show("Допускаются студенты возрастом от 16 и более лет", "Ошибка");
}

}
Голосование за лучший ответ
Руслан Сафин Знаток (423) 7 месяцев назад
Пожалуйста, не используйте Кириллицу при именовании переменных/методов/классов/интерфейсов и т.д.

У C# есть рекомендации по именованию и стилистике кода, крайне рекомендую ознакомиться ( тык )

Например:
  • Все имена должны быть на английском
  • Переменные с заданной областью видимости именуются в стиле camelCase
  • Имена свойств классов и методов в PascalCase
  • Имена методов должны быть глаголом в инфинитиве
  • Имена интерфейсов начинаются с буквы I (Например IDisposable)
  • Имена приватных полей начинается с нижнего подчеркивание и дальше camelCase (Например _myNumber)
  • Имя переменной должно отражать суть хранимых в ней значений (например float playerHealth = 100)
  • В самом коде не должно быть "магических" чисел условно health - 5, все числа должны быть в переменных при реализации логики (Например health - damage)
Похожие вопросы