Это называется анонимным классом в Java. На самом деле это просто реализация класса без имени, которая переопределяет ToString ()
Вы могли бы иметь то же самое в C # с обычным именованным классом - единственная проблема в том, что DateTime является структурой в C #, поэтому вы не можете наследовать от нее.
C # имеет анонимные типы, но не так, как в Java. В C # вы можете иметь анонимный тип и указывать его свойства, но вы не можете указать какие-либо реализации методов. Поэтому анонимные типы в C # и Java, как правило, используются для разных целей.
Редактировать
Вот пример того, как вы будете делать это в C #, но, как указано выше, вы не можете сделать это на DateTime (или других struct
s, или закрытых классах) в C #. Итак, ради примера; Я использую воображаемый класс с именем Token, который имеет единственное строковое свойство «Значение»:
private Token GetNamedToken(Token t, string name)
{
return new NamedToken {Value = t.Value, Name = name};
}
private class NamedToken : Token
{
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}