Не лишняя ли здесь проверка enum параметра? (UserRole - enum-объект). И вообще нужна ли проверка на enum типы во входных параметрах?! Спасибо за внимание!
public User(string firstname, string lastname, UserRole role)
{
if(firstname == null)
throw new ArgumentNullException("Ошибка имени.", nameof(firstname));
if(lastname == null)
throw new ArgumentNullException("Ошибка фамилии.", nameof(lastname));
if (!Enum.IsDefined(typeof(UserRole), role))
throw new ArgumentNullException("Ошибка роли.", nameof(role));
FirstName = firstname;
LastName = lastname;
Position = role;
}
Всё зависит от контекста. Если ваш enum
допускает кастомные значения и используется просто как набор констант, то проверка лишняя. Зачастую это флаги.
Если же у вас есть, например, такой enum
:
[Flags]
public enum BufferAccess
{
None = 0x0,
Read = 0x1,
Write = 0x2,
ReadWrite = Read | Write // or `Both`
}
…то тут следует делать проверку. Лично я использую вот такой метод:
BufferAccessMethods.cs
public static class BufferAccessMethods
{
public static bool Validate(this BufferAccess @this)
{
const BufferAccess max = BufferAccess.ReadWrite;
if (@this < 0 || @this > max) return false;
return true;
}
}
Использование
void Do(BufferAccess access)
{
if (!access.Validate())
throw new ArgumentException("Invalid buffer access", nameof(access));
⋮
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо просто поле count постоянно добавлять +1, как я понимаю если я сделаю так:
Мне нужно сравнить две даты(DateTime) и узнать является их разница больше X днейЯ понимаю что тут дело в логике, но я не могу сам написать эту функцию