Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 C# символы Unicode  [new]
vah
Member

Откуда:
Сообщений: 2688
Скажите пожалуйста,
возможно ли используемы здесь символы Unicode u2705 и u26D4 представить разными цветами?

Если да, то как?

        private string GetStr(DateTime? date, bool isPayment)
        {
            var result = default(string);
            
            if (date != null)
            {
                var _date = Convert.ToDateTime(date);
                
                result += $"{_date.ToShortDateString()} ";

                if (isPayment is true)
                {
                    result = $"\u2705 {result}";
                }
                else
                {
                    result = $"\u26D4 {result}";
                }

                result = result.Trim() + Environment.NewLine;
            }

            return result;
        }
        



Заранее благодарен.
30 апр 21, 10:05    [22316702]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22381
Здесь - нет.
Здесь нет никакого представления для пользователя, в данном контексте нет вообще никакого понятия о цвете, даже о том, каким цветом будет выведен существующий сейчас текст.

В представлении вероятно можно.
30 апр 21, 10:22    [22316714]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4206
vah
Скажите пожалуйста,
возможно ли используемы здесь символы Unicode u2705 и u26D4 представить разными цветами?

Если да, то как?

        private string GetStr(DateTime? date, bool isPayment)
        {
            var result = default(string); //Бредятина 0
            
            if (date != null)
            {

                var _date = Convert.ToDateTime(date); //Бредятина 1
                
                result += $"{_date.ToShortDateString()} "; //Бредятина 2

                if (isPayment is true) //Бредятина 3
                {
                    result = $"\u2705 {result}";
                }
                else
                {
                    result = $"\u26D4 {result}";
                }

                result = result.Trim() + Environment.NewLine;  //Бредятина 4
            }

            return result;
        }
        



Заранее благодарен.

Бредятина 0. Какая то бессмысленная конструкция, проще была написать просто string result;
Бредятина 1. Из Nullable<T> можно приводить тип сразу в T, но еще проще получить его из поля Nullable<T>.Value, а проверять наличие с помощью поля Nullable<T>.HasValue
Бредятина 2. Просто используй конкатинацию, зачем этот изврат?
Бредятина 3. Я даже не уверен, что там можно.. Is True?. Если переменная isPayment булевая, то можно просто написать if (isPayment)
Бредятина 4. В конце строки вставлять символ переноса идея плохая, обычно это происходить в методах записи в поток.
Весь ваш код умещается в пару строк
private string GetStr(DateTime? date, bool isPayment)
{
    return !date.HasValue
        ? string.Empty
        : string.Concat((isPayment ? "\u2705" : "\u26D4"), " ", date.Value.ToShortDateString());
}
30 апр 21, 10:55    [22316737]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
fkthat
Member

Откуда:
Сообщений: 4880
vah
var result = default(string); //Бредятина 0

Не так уж и бредятина. Без этого компилятор ошибку выдаст. Потому что при date == null result останется неинициализированным.

Roman Mejtes
Бредятина 4. В конце строки вставлять символ переноса идея плохая, обычно это происходить в методах записи в поток.

Так-то да, но может челу так специфицировали что он такое должен возвращать - всей картины мы-то не видим.

Roman Mejtes
Весь ваш код умещается в пару строк

Твой код не ведет себя точно так же, как исходный и сразу бы провалил нормальные юнит-тесты. Это хороший пример плохого рефакторинга.

Сообщение было отредактировано: 30 апр 21, 11:13
30 апр 21, 11:18    [22316766]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753

vah
 private string GetStr(DateTime? date, bool isPayment)
        {
            var result = default(string);
            
            if (date != null)
            {
                var _date = Convert.ToDateTime(date);
                
                result += $"{_date.ToShortDateString()} ";

                if (isPayment is true)
                {
                    result = $"\u2705 {result}";
                }
                else
                {
                    result = $"\u26D4 {result}";
                }

                result = result.Trim() + Environment.NewLine;
            }

            return 
30 апр 21, 18:41    [22317048]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
fkthat
vah
var result = default(string); //Бредятина 0


Не так уж и бредятина. Без этого компилятор ошибку выдаст. Потому что при date == null result останется неинициализированным.

Потому что строка
result += $"{_date.ToShortDateString()} ";

бредятина.

Достаточно

result = $"{_date.ToShortDateString()} ";


Да и вообще, все эти "мудрствования" равны

result =  (iisPayment ? "\u2705" : "\u26D4") + " " +Convert.ToShortDateString(date) + Environment.NewLine;
30 апр 21, 18:56    [22317055]     Ответить | Цитировать Сообщить модератору
 Re: C# символы Unicode  [new]
fkthat
Member

Откуда:
Сообщений: 4880
Cat2
Потому что строка

Я по "Бредятину 0" говорил, при чем тут строка шестью строками ниже. Ты еще вообще из другого проекта процитируй.
30 апр 21, 21:00    [22317080]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить