Обзор:
Это почти верно, что C++ является надмножеством C, и Ваш преподаватель корректен в этом нет никакой потребности изучить C отдельно.
C++ добавляет целый объектно-ориентированный аспект, универсальный аспект программирования, а также наличие менее строгих правил (как переменные, бывшие должные быть объявленными во главе каждой функции). C++ действительно изменяет определение некоторых условий в C, таких как структуры, хотя все еще в надмножестве путь.
Примеры того, почему это не строгое надмножество:
статья This Wikipedia имеет пару хороших примеров таких различий:
Одно различие, с которым обычно встречаются, - то, что C позволяет неявное преобразование из пустоты* к другим типам указателей, но C++ не делает. Так, следующее является допустимым кодом C:
int *i = malloc(sizeof(int) * 5);
..., но заставить его работать и в C и в C++ нужно было бы использовать явный бросок:
int *i = (int *) malloc(sizeof(int) * 5)
Другая общая проблема мобильности - то, что C++ определяет много новых ключевых слов, такой столь же новый и класс, который может использоваться как идентификаторы (например, имена переменной) в программе C.
Эта статья Википедии имеет дальнейшие различия также:
компиляторы C++ мешают goto пересекать инициализацию, как в следующем коде C99:
void fn(void)
{
goto flack;
int i = 1;
flack:
;
}
, Что необходимо изучить сначала?
необходимо изучить C++ сначала, не потому что изучение C сначала причинит Вам боль, не потому что необходимо будет забыть что-либо (Вы не будете), но потому что нет никакого преимущества в изучении C сначала. Вы в конечном счете узнаете примерно все о C так или иначе, потому что он более или менее содержится в C++.
Структура System.DateTime
- это то, что вы ищете.
sb.Append(DateTime.Now.AddMonths(1).ToString("MMddyyHHmm"));
Как указывает Джоэл Кохорн, вы можете сжать этот код в одну строку. Я настолько увлекся реализацией, что не видел, что вы на самом деле пытались сделать - к счастью, Джоэл указал на это.
Это сведет все это в один вызов. Довольно изящно.
Чтобы перевести код Java на C #, вы должны сделать что-то вроде следующего:
string year = DateTime.Now.Year.ToString();
sb.Append(DateTime.Now.AddMonths(1));
sb.Append(DateTime.Now.Day);
sb.Append(year.Substring(2));
sb.Append(DateTime.Now.Hour);
sb.Append(DateTime.Now.Minute);
Вы можете скопировать / вставить этот код C #, чтобы увидеть:
StringBuilder sb = new StringBuilder();
string year = DateTime.Now.Year.ToString();
sb.Append(String.Format("Next Month is: {0} \n ",DateTime.Now.AddMonths(1)));
sb.Append(String.Format("Day is {0}\n ", DateTime.Now.Day));
sb.Append(String.Format("Year is {0}\n ", year.Substring(2)));
sb.Append(String.Format("The Hour is {0}\n ", DateTime.Now.Hour)); //getting late
sb.Append(String.Format("The Minute is {0}\n ", DateTime.Now.Minute));
Структура DateTime
не имеет тех же проблем, которые были у Java с их реализацией даты; так что у вас не должно быть тех же проблем, которые преследовали мир Java.
Как другой пользователь указал , вы также можете использовать класс System.Globalization.Calendar
. Я прекрасно лажу со структурой DateTime
, и она немного легче, чем класс Calendar, но они оба могут использоваться. Если вы собираетесь прыгать по датам и календарям, используйте класс Calendar
; если вы собираетесь придерживаться одной реализации дат, тогда подойдет DateTime
struct
.
Calendar
; если вы собираетесь придерживаться одной реализации дат, тогда подойдет DateTime
struct
. мы собираемся прыгать по датам и календарям, а затем перейти к классу Calendar
; если вы собираетесь придерживаться одной реализации дат, тогда подойдет DateTime
struct
. System.DateTime
Типа:
DateTime now = DateTime.Now;
DateTime tommorowsTomorrow = now.AddDays(2);
И так далее.