, если ваше приложение находится в фоновом режиме, значок уведомлений будет установлен в методе приема сообщений, но если приложение находится на переднем плане, значок уведомления будет тем, который вы определили в манифесте
+ оператор для строки перегружается для вызова Строки. Передача Concat в левой и правой стороне выражения. Таким образом:
string x = "123" + 45;
Компилируется в:
String.Concat("123", 45);
Начиная со Строки. Concat берет в двух объектах, правая сторона (45) упаковывается, и затем ToString () называют на нем.
Обратите внимание, что эта "перегрузка" не через оператор, перегружающийся на языке (иначе, это не метод, названный op_Addition), но обрабатывается компилятором.
Это не только плохая практика, но также и менее производительный: целое число должно быть упаковано потому что Строка. Concat ожид объект, в то время как интервал. ToString () не требует упаковки.
Это - допустимая плохая практика, как необходимо думать дважды, является ли переменная строкой или интервалом. Что, если переменную назвали бы myInt?
myInt = myInt + 23;
это более читаемо и понятно в этой форме?
myInt = mInt + "23";
или даже:
myInt = string.Format("{0}{1}", myInt, 23);
Мы знаем из кода, что это - строка и не целое число.
C# автоматически преобразовывает объекты в строки для Вас. Рассмотрите эту строку кода:
aString = aString + 23;
Это - допустимый C#; это компилирует вниз в вызов для Строкового представления. Concat (), который берет два объекта в качестве аргументов. Те объекты автоматически преобразовываются для строкового представления объектов для Вас.
То же самое происходит, когда Вы пишете:
aString += 23;
Снова, это компилирует вниз в тот же вызов для Строкового представления. Concat (); это просто записано по-другому.