Member 12926744 Ответов: 3

> = И < = не могут быть применены к операндам типа string и string


Всем Привет,
Мне нужно сравнить метку с двумя значениями .Но я получаю эту ошибку ">= не может быть применен к операндам типа string и string "
Любая помощь будет очень признательна.Заранее спасибо.

Что я уже пробовал:

if (lbltime.Text >= dwldstime && lbltime.Text == dwldetime)
                   {
                      //
                   }

Karthik_Mahalingam

какова ценность, которую вы получаете
lbltime.Текст,dwldstime ,dwldtime ?

[no name]

Пожалуйста, укажите, какой тип значения вы ожидаете всегда в этикетке.Есть два упомянутых решения.Один из них заключается в том, чтобы ожидать текст метки как числовой, а другой-как datetime

3 Ответов

Рейтинг:
1

Pete O'Hanlon

The error is telling you exactly what the problem is. Basically, you have two string values here; one in lbltime.Text and the other in dwldetime. Now, I have no idea what type you expect in here so I'm going to assume for the purposes of this example that they are both meant to be numeric, which means that you are going to have to convert them into an appropriate numeric type. Now, suppose that these are both numbers, then you are going to want to use TryParse (a much better choice than using something like int.Parse or Convert.ToInt32 because it copes with rubbish values) to convert the inputs and perform the calculations on the returned values. Something like this would be appropriate:

int inputTime;
if (int.TryParse(lbltime.Text, out inputTime))
{
  int comparisonTime;
  if (int.TryParse(dwldetime, out comparisonTime))
  {
    if (inputTime >= comparisonTime && inputTime <= comparisonTime)
    {
      // ....
    }
  }
}
Обратите внимание, что чтение сообщений об ошибках компилятора является ценным навыком. Это должно быть легко понять для любого, кто занимался кодированием в течение любого периода времени.


Рейтинг:
1

Kornfeld Eliyahu Peter

Это потому, что String class не реализует эти операторы (только == и!=), и причина в том, что ему пришлось бы выполнять некоторую сортировку (и он был бы осведомлен о локали), и это слишком усложнило бы ситуацию для базового класса...
Конечно, вы можете реализовать свои собственные операторы для вашего случая, но, вероятно, лучше использовать метод Compare/CompareTo String (тот, который подходит)...

Глядя на ваш выбор имен переменных, я подумал, что у вас есть здесь значения даты и времени, которые вы пытаетесь сравнить в виде строк, что, конечно, было бы худшим способом сделать. Если действительно эти значения даты и времени сравниваются, то как есть...


Рейтинг:
0

debasish mishra

Пожалуйста, используйте функцию сравнения для даты и времени.Исходя из предположения, что метки находятся в формате даты и времени.

DateTime dateval;
DateTime.TryParse(lbltime.Text,out dateval);
result1=DateTime.Compare(dateval, dwldstime);
result2=DateTime.Compare(dateval, dwldetime);
string relationship;
 if (result1 < 0 && result2==0)
       {
}


Если это поможет, пожалуйста, проголосуйте за этот ответ.Это действительно помогает.


Pete O'Hanlon

Вы делаете предположения, что это для даты и времени. Точно так же вы не должны использовать Convert.ToDateTime, если вы не можете гарантировать, что входные данные находятся в подходящих форматах. Наконец, если это действительно Дата-Время, то существует так много вещей, которые необходимо учитывать в отношении культур, которые ваш код упускает из виду. В лучшем случае ваше решение-это упрощенный случай, который может быть решен для узкого диапазона входных данных.

[no name]

Ну,вы правы, и я обновил дату и время, чтобы попробовать разобрать, но ниже ваше решение также основано на предположениях, что используемая метка является числовой.

Pete O'Hanlon

Действительно - и я вызвал это, чтобы подчеркнуть это для пользователя.

[no name]

Правильно. Up проголосовал за ваше решение и попросил пользователя ввести текстовый тип данных метки в разделе вопросов или комментариев.