Как правильно осуществить перегрузку и использовать в дальнейшем данный логический оператор «!». Если сравнивается следующие: если заданная дата(DateTime) день не является последним днём месяца то возвращается true, иначе false. Как перегрузить если это все в созданном классе и как этот перегруженный оператор использовать?( Добавил код:
public class DaateTime
{
private DateTime data;
public DaateTime()
{
data = new DateTime(2000, 01, 01);
}
public DaateTime(DateTime data)
{
this.data = data;
}
public static bool operator !(DaateTime data)
{
var day = new DateTime(data.data.Year, data.data.Month, 1);
day = day.AddMonths(1);
day = day.AddDays(-1);
if (data.data.Day == day.Day)
return false;
else
return true;
}
Как мне теперь это дело вызвать из main? (если конечно всё правильно сделал с оператором) Вот так:
class Program
{
static void Main(string[] args)
{
DaateTime da = new DaateTime(new DateTime(2000,01,01));
Console.WriteLine(!da);
Console.ReadKey();
}
}
Оператор для структуры DateTime
переопределить нельзя, потому что она имеет пометку sealed
. Унарный опрератор кастомного класса, переопределяется без проблем
public class Demo {
public class MyClass {
DateTime d = DateTime.Now;
// Переопределили
public static bool operator !(MyClass a) {
return a.d.AddDays(1).Month != a.d.Month;
}
// Функция была бы так
public bool e(){return d.AddDays(1).Month!=d.Month;};
// Можно свойтсво
public bool b { get { return d.AddDays(1).Month!=d.Month;} }
}
public static void Main() {
MyClass x = new MyClass();
Console.WriteLine(!x); // вызов оператора
}
}
Для унарных операторов - параметр один, оператор должен быть статиком.
С точки зрения ООП это тут нарушение, по-хорошему нужно что бы !obj
- вернул такой же обьект в инверсном представлении, но среда не мешает вернуть bool вместо, и переопределить как угодно.
Мне кажется - само удобно - свойство. А економия в один символ - ну такое.
Виртуальный выделенный сервер (VDS) становится отличным выбором
есть такой код, который должен рассчитывать по данным стоимость домана сайте это выглядит как два селекта и поле для ввода метража
Нашел простой гайд как сделать админпанель с возможностью постинга и редактирования постовСделал всё как в видео, но добавление и редактирование...
Из соображений безопасности я использую ufw, в нём я открыл порты 80, 443 и 22