Error cs0019 operator cannot be applied to operands of type char and string

Ошибка с кодом CS0019 оператор "==" невозможно применить к типу "char" и "string" C# Решение и ответ на вопрос 2861564

After_Thought

0 / 0 / 0

Регистрация: 28.07.2021

Сообщений: 9

1

28.07.2021, 07:57. Показов 3781. Ответов 2

Метки нет (Все метки)


Добрый день, возникла ошибка при сравнении char’а из списка и определённой буквы. Писал до этого на питоне, где можно было позволить себе такие конструкции

C#
1
2
3
if (Naprav[i] == "L") {
     //Тогда то-то, то-то
}

Можно-ли сделать что-то подобное на C#?

Вот полный код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace CA
{
    class Program
    {
        static void Main()
        {
            string vvod = Console.ReadLine();
            int dlina = vvod.Length;
            List<char> Naprav = new List<char>() {};
            int x = 0;
            int y = 0;
            string move = "y+";
            for (int i = 0; i < dlina; i++)
            {
                Naprav.Add(vvod[i]);
            }
            for (int i = 0; i < dlina; i++)
            {
                if (Naprav[i] == "L")
                {
                    //Тогда то-то, то-то
                }
            }
            Console.ReadKey();
        }
    }
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Max61

171 / 131 / 63

Регистрация: 02.05.2021

Сообщений: 442

28.07.2021, 08:04

2

Лучший ответ Сообщение было отмечено After_Thought как решение

Решение

Замените » » на ‘ ‘ здесь:

C#
1
2
3
4
                if (Naprav[i] == "L")
                {
                    //Тогда то-то, то-то
                }

получиться:

C#
1
2
3
4
                if (Naprav[i] == 'L')
                {
                    //Тогда то-то, то-то
                }

Добавлено через 3 минуты
Ну или так:

C#
1
2
3
4
                if (Naprav[i].ToString() == "L")
                {
                    //Тогда то-то, то-то
                }



1



0 / 0 / 0

Регистрация: 28.07.2021

Сообщений: 9

28.07.2021, 08:05

 [ТС]

3

Спасибо!



0



  • Remove From My Forums
  • Question

  • User-501297529 posted

     I am receiving this error on with this code and I am not sure what I am missing.

                String strFirstName = string.Empty, strLastName = string.Empty;
                if (txtNameOnCard.Text.IndexOf(" ") != -1)
                {
                    strFirstName = txtNameOnCard.Text.Split(' ')[0];
                    strLastName = txtNameOnCard.Text.Split(' ')[1];
                    try
                    {
                        if(txtNameOnCard.Text.Split(' ')[2] > ' ') {
                        strLastName = txtNameOnCard.Text.Split(' ')[2];
                        }
                    }
                    catch
                    {
    
                    }
                }
                else
                {
                    strFirstName = txtNameOnCard.Text;
                }

Answers

  • User656402446 posted

    Problem is this.

    txtNameOnCard.Text.Split(‘ ‘)[2] > ‘ ‘

    ‘ ‘ is  used for char space. You may need to use » » instead. because txtNameonCard.Text.spilt(‘  ‘) spit into string and you are comparing it with a char, which is wrong.

    Using » » will solve your issue

    • Marked as answer by

      Thursday, October 7, 2021 12:00 AM

I am getting the error below, and I don’t know how to fix it. I just want to learn but cant figure this one out. I tried to replace it with an equal (=) and with lots of things but no use, the code is:

if (keyinfo.KeyChar == "a") 
{

}

This is the error:

0019 Operator ‘==’ cannot be applied to operands of type ‘char’ and ‘string’

How can I avoid getting this error?

Idos's user avatar

Idos

14.9k14 gold badges56 silver badges72 bronze badges

asked Mar 3, 2016 at 17:43

IronAmstaff's user avatar

3

Use 'a' and not "a", the difference between char and string is subtle here but substantial.

answered Mar 3, 2016 at 17:45

Idos's user avatar

IdosIdos

14.9k14 gold badges56 silver badges72 bronze badges

Итак, вопрос в том, как вы разрешите эту ошибку?

Это зависит от того, чего вы пытаетесь достичь. Давайте посмотрим на соответствующую строку:

if (middleName[0] != "")

Что вы действительно пытаетесь определить здесь? Не имеет смысла спрашивать, является ли первый символ middleName (что является middleName[0]) является пустой строкой. Если бы вы проверяли, равно ли он «X» (или какой-то другой односимвольной строки), я мог бы подумать, что вы хотите, if (middleName.StartsWith(...)).

Но если вы на самом деле просто пытаетесь выяснить, является ли middleName не пустым, вы можете использовать:

if (middleName != "")

или если middleName также может быть нулевым, и вы хотите обнаружить это, вы можете захотеть:

if (!string.IsNullOrEmpty(middleName))

На самом деле, если middleName пуст, тогда middleName[0] будет генерировать middleName[0] IndexOutOfRangeException.

Как побочный вопрос — если это действительно не одноразовый, это предполагает, что вы должны найти другую книгу. В то время как ошибки могут проскользнуть, вы действительно, действительно должны быть в состоянии ожидать кода в книге для компиляции (если только она не пытается продемонстрировать сбой). Возможно, вы захотите изменить свой вопрос, чтобы назвать и позорить рассматриваемую книгу :) (Тот факт, что он использует имя метода displayFullName и имя переменной FullName в С#, также несколько задевает.)

Понравилась статья? Поделить с друзьями:
  • Error cs0006 не удалось найти файл метаданных microsoft vsa dll
  • Error cs0006 metadata file could not be found
  • Error cs 1002 unity
  • Error cs 0117
  • Error cryptcertstrtonamew failed 0x80092023 2146885597