2012-07-03 3 views
-3

Можно создать дубликат:
How can I convert String to Int?Как преобразовать строку в int?

public List<int> GetListIntKey(int keys) 
{ 
     int j; 
     List<int> t; 
     t = new List<int>(); 
     int i; 
     for (i = 0; ; i++) 
     { 
      j = GetKey((keys + i).ToString()); 
      if (j == null) 
      { 
       break; 
      } 
      else 
      { 
       t.Add(j); 
      } 
     } 
     if (t.Count == 0) 
      return null; 
     else 
      return t; 
} 

Проблема находится на линии:

j = GetKey((keys + i).ToString()); 

я получаю сообщение об ошибке сказать:

Не удается неявно преобразовать тип «строка» до «» междунар

Теперь функция GetKey является тип строки:

public string GetKey(string key) 
{ 
} 

Что я должен делать?

+0

Этот вопрос задает вопрос о преобразовании int в строку, но вы уже поняли это, и сообщение об ошибке связано с преобразованием строки в int. – hvd

+3

Измените свой вопрос и исправьте его название. Проблема заключается в преобразовании строки в int, а не в int. – daniloquio

+1

Мне нравится, как большинство правильных ответов опущены. – jrummell

ответ

2

типа результата вашей GETKEY струнный собственный переменная J объявлена ​​Int

решения:

j = Convert.ToInt32(GetKey((keys + i).ToString())); 

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

3

Попробуйте это:

j = Int32.Parse(GetKey((keys + i).ToString())); 

Это будет сгенерировано исключение, если значение не является допустимым числом.

Альтернативой является TryParse, который возвращает логическое значение, если преобразование не удалось:

j = 0; 

Int32.TryParse(GetKey((keys + i).ToString()), out j); 
// this returns false when the value is not a valid integer. 
5

Проблема в том, что «J» является INT, и вы назначаете его к возвращению GETKEY. Либо сделайте «j» строку, либо измените возвращаемый тип GetKey на int.

-1
What should i do ? 

У вас все это не так. Читайте о типах значений и ссылочных типах.

Ошибки:

  1. Ошибка Cannot implicitly convert type 'string' to 'int'. Неявно подразумевается, что он получает строку, которую он не может преобразовать в int. GetKeys возвращает строку, которую вы пытаетесь присвоить целому числу j.

  2. Ваш j является целым числом. Как это можно проверить с помощью null. Когда тип значения может быть нулевым?

Используйте этот

public List<int> GetListIntKey(int keys) 
{ 
    int j = 0; 
    List<int> t = new List<int>(); 
    for (int i = 0; ; i++) 
    { 
     string s = GetKey((keys + i).ToString()); 

     if (Int.TryParse(s, out j)) 
      break; 
     else 
      t.Add(j); 
    } 

    if (t.Count == 0) 
     return null; 
    else 
     return t; 
} 
+5

«Учиться программированию» было невостребовано и грубо. Мы все начинаем где-то, и последнее, что нам нужно, это заставить кого-то принижать нас, когда мы обращаемся за помощью. – DarLom

+0

@DarvisLombardo: Исправлено. Дело принято. Обратный вниз. –

+0

@ daniloquio: Я хочу +10. но я даже не получу это. Достигнут мой текущий предел за день (200). –

-1

Вы должны использовать тип exppicit бросок.

Использование

int i = Convert.ToInt32(aString); 

конвертировать.

+0

Это Java, а не C#. – hvd

+0

1. он хочет преобразовать int в строку 2. это вопрос C#. – Femaref

+2

@Femaref re. 1: нет, он этого не делает. Заголовок вопроса неправильный, сообщение об ошибке - это преобразование строки в конец. – hvd

1

Вы получаете ошибку, потому что GetKey возвращает строку, и вы пытаетесь присвоить объект return j, объявленный как int. Вам нужно сделать, как предложено alfonso, и преобразовать возвращаемое значение в int. Вы также можете использовать:

j = Convert.ToInt32(GetKey((keys+i).ToString())); 
1

попытаться улучшить свой код, и посмотреть это:

public List<int> GetListIntKey(int keys) 
{ 
    var t = new List<int>(); 

    for (int i = 0; ; i++) 
    { 
     var j = GetKey((keys + i).ToString()); 
     int n; 
     // check if it's possible to convert a number, because j is a string. 
     if (int.TryParse(j, out n)) 
      // if it works, add on the list 
      t.Add(n); 
     else //otherwise it is not a number, null, empty, etc... 
      break; 
    } 
    return t.Count == 0 ? null : t; 
} 

Я надеюсь, что это поможет вам! :)

Смежные вопросы