Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Преобразование типов


Автор: bankuss 15.3.2006, 12:26
Код

int km = 10;
string lk;
lk = (string) km;


пишет cannot convert type...

Автор: _hunter 15.3.2006, 12:46
еррор в том, что нельзя так преобразовывать.
используй Convert.ToString()

Автор: bankuss 15.3.2006, 13:04
_hunter, я так понимаю пример данный мной работает в 2003? а в 2005 все через convert делать?
этот пример взят из книги! smile

Автор: _hunter 15.3.2006, 13:08
хз. я в первом фреймворке не работал.
во втором только так...

Автор: Medved 15.3.2006, 13:15
Приведенный код- правильный.

Ищите ошибку в другом месте.

Автор: bankuss 15.3.2006, 15:35
Pegas, где искать? там всего 3 эти строчки smile Convert кстати работает без проблем.

Автор: Exception 15.3.2006, 16:06
Уж не помню, что там в первом фреймворке...
Я не пойму только, такой код религия не позволяет написать smile :
Код

int km = 10;
string lk;
lk = km.ToString();

Автор: arilou 15.3.2006, 16:29
Цитата(bankuss @ 15.3.2006, 12:26 Найти цитируемый пост)
lk = (string) km;

Данная строка означает "приведем переменную типа int к типу string". Для того, чтобы такая операция сработала, int должен стоять в цепочке наследования после string, либо string должен быть интерфейсом, который реализуется в классе int. Ни первое, ни второе не верно, поэтому операция приведения типа не работает.

Автор: bankuss 15.3.2006, 16:42
arilou, иногда такие "мелочи" мешают работать! smile а для чего язык высокого уровня сделан? чтоб облегчить программистский труд smile а тут приходится тонну литературы прочитать прежде чем станет ясна проблема.... проще надо быть...

Автор: arilou 15.3.2006, 16:52
Цитата(bankuss @ 15.3.2006, 16:42 Найти цитируемый пост)
а для чего язык высокого уровня сделан

Честно - то, о чем ты говоришь реализовано в VB.NET. Но поверь мне, недостатков больше чем достоинств.

Автор: Gesha 22.3.2006, 09:27
Непойму, в чем трабла?
Почему вместо
Код

int km = 10;
string lk;
lk = (string) km;

нельзя написать
Код

int km = 10;
string lk;
lk = km.ToString();


Цитата(Exception @ 15.3.2006, 16:06 Найти цитируемый пост)
религия не позволяет

Скорее всего!

Автор: bankuss 24.3.2006, 15:43
Gesha, ToString выдает ошибку!

Автор: Gesha 24.3.2006, 16:02
bankuss, не может быть!

Какую ошибку?

Автор: arilou 24.3.2006, 16:09
Цитата(bankuss @ 24.3.2006, 15:43 Найти цитируемый пост)
Gesha, ToString выдает ошибку!

КАКУЮ!?! smile

Автор: ivashkanet 24.3.2006, 16:10
Цитата(arilou @ 15.3.2006, 16:29 Найти цитируемый пост)
Цитата(bankuss @ 15.3.2006, 12:26 )
lk = (string) km;

Данная строка означает "приведем переменную типа int к типу string". Для того, чтобы такая операция сработала, int должен стоять в цепочке наследования после string, либо string должен быть интерфейсом, который реализуется в классе int. Ни первое, ни второе не верно, поэтому операция приведения типа не работает.


Несогласен!

Данная сторка означает, что вызывается явное преобразование int к string. Если оно есть то код работает, а в С# его нет.
А вот почему такого преобразования нет в C# можно почитать в http://forum.vingrad.ru/index.php?showtopic=88475


P.S. А вообще можно написать преобразование любого типа к любому!!!
Код


public class MyClass
{
public int i,j,k;
public string l,k,m;

         public static explicit operator MyClass(int intValue)    
                 {    
                      MyClass mcTemp= new MyClass();
                      mcTemp.i=intValue;
                      mcTemp.j=intValue*intValue;
                      mcTemp.i=intValue-12369;
                      mcTemp.l=intValue.ToString();
                      ......
                      return mcTemp;
                 }
}

Даже такой явный изврат. smile

Автор: bankuss 27.3.2006, 10:50
arilou,
Код

int a = 1;
string b = a.ToString;


вот пример нерабочего кода.
пишет:
Cannot convert method group 'ToString' to non-delegate type 'string'. Did you intend to invoke the method?

Автор: ivashkanet 27.3.2006, 10:55
Цитата(bankuss @ 27.3.2006, 10:50 Найти цитируемый пост)
a.ToString;

ToString ЭТО МЕТОД поэтому

Код

int a = 1;    
string b = a.ToString();


Вот это пашет.

Вот он и ругается у тебя на делегата (ToString, без скобок)

Автор: bankuss 27.3.2006, 11:02
ivashkanet, да верно, скобки забыл smile бывает...

Автор: mr.DUDA 27.3.2006, 12:56

M
mr.DUDA
Не сочтите за наглость, но будем писать грамотно:

Цитата(ivashkanet @  27.3.2006,  09:55 Найти цитируемый пост)
ругаеться


ivashkanet, ругается (что делает, без мягкого знака).

Автор: ivashkanet 27.3.2006, 13:08
Цитата(mr.DUDA @ 27.3.2006, 12:56 Найти цитируемый пост)
Не сочтите за наглость, но будем писать грамотно:


Цитата(ivashkanet @  27.3.2006,  09:55 )
ругаеться


ivashkanet, ругается (что делает, без мягкого знака).



Это моя болезнь. Стал выздоравливать, и вот опять. smile

Автор: mr.DUDA 27.3.2006, 13:58
Цитата(ivashkanet @ 27.3.2006, 12:08 Найти цитируемый пост)
Это моя болезнь. Стал выздоравливать, и вот опять. 

Если хочешь, буду проверять посты smile

Автор: ivashkanet 27.3.2006, 14:38
Цитата(mr.DUDA @ 27.3.2006, 13:58 Найти цитируемый пост)
Если хочешь, буду проверять посты

Спасибо, не надо!

Есть Aspell, но я забыл проверить пост.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)