- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
char arr[] = ... // Здесь происходит чтение массива, неважно как
string result = "";
for(int i = 0; i < arr.Length; i++)
{
result += Char.ToString(arr[i]);
}
Console.WriteLine(result);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+124
char arr[] = ... // Здесь происходит чтение массива, неважно как
string result = "";
for(int i = 0; i < arr.Length; i++)
{
result += Char.ToString(arr[i]);
}
Console.WriteLine(result);
Что интересно, автор уже пол года на C# пишет, до этого 2 года на Java. Решение ко всему прочему еще и очевидно с квадратичной сложностью. А должно быть, естественно Console.WriteLine(new String(array));
HyperGeek 27.05.2010 15:40 # 0
theos 27.05.2010 15:41 # 0
HyperGeek 27.05.2010 15:59 # −3
theos 27.05.2010 16:04 # +3
Не совсем. Строка может содержать не весь массив. Тем более что массив логично выводить как [e1, e2, ... ] а не как строки. Честно скажу - на c# не пишу (пишу на джаве) просто у коллеги увидел случайно и попроавил опираясь на знания джавы.
xXx_totalwar 27.05.2010 16:16 # +3
пиздеж и провокация. в шурупе строки иммутабельны
HyperGeek 27.05.2010 16:43 # −3
xXx_totalwar 27.05.2010 16:52 # +5
массивы мутабельны
>И вообще при чем тут это?
притом, что в заблуждение людей вводишь
>Что string, что char[] — последовательность символов
string - класс вообще-то, а последовательность символов это что-то наподобие 'a','b','c'.....
>и печатаются они в консоли абсолютно одинаково
так одинаково, угу.
guest 27.05.2010 16:54 # +2
в .NET (равно как и в Java) строки имутабельны (в отличии от массивов) и вообще могут пулица
guest 27.05.2010 22:45 # −5
guest 28.05.2010 00:35 # −3
guest 28.05.2010 03:58 # +3
guest 28.05.2010 08:49 # −5
> arr.Length
С точки зрения нормального языка ломает мозг и выносит навылет.
guest 28.05.2010 09:07 # +2
guest 28.05.2010 22:31 # +1
"char arr[]" вообще недопустимо в C#, зато допустимов яве.
C# 3.0 даёт:
Ошибка 1 Неверный оператор объявления массива. Для объявления управляемого массива спецификатор ранга должен предшествовать идентификатору переменной. Чтобы объявить поле буфера фиксированного размера, перед типом поля используйте ключевое слово fixed. C:\Documents and Settings\Максим Прохоров\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 12 19 ConsoleApplication1
Stalker 29.05.2010 01:45 # +2
guest 29.05.2010 10:16 # −1
xXx_totalwar 29.05.2010 10:39 # 0
... C:\Documents and Settings\Максим Прохоров\Local Settings\....
guest 30.05.2010 04:05 # −3
Вот как у меня это выглядет:
C:\>echo %userprofile%
C:\Users\Розовая Попка.WINPC
guest 30.05.2010 04:46 # −4
Lure Of Chaos 31.05.2010 19:42 # −2
roskomgovno 15.07.2018 00:38 # −1
В NTFS есть много чего (включая кейс сенситивити, стримы и ссылки) но этим редко пользуются.
А так -- да. "documents and settings" это конечно был ёбаный стыд, испортивший кровичуть меньше, чем обратные слеши и \r\n в качетсве перевода строки
guest8 15.07.2018 00:53 # −999
roskomgovno 15.07.2018 01:01 # −1
Просто в unix от этого отказались, решив сэкономить символ, а у MS нет. Но возможно что ты прав и именно желание легко печтать документы на матричных (тупых, безпротокольных) принтаках и сыграло свою роль.
Первые принтеры были даже и не матричные, а знако-местовые (см Daisy wheel printing): у них не могло быть никаких кодировок, бо все буквы были отлиты в граните.
Однако большинство принетров что тогда, что сейчас обратно совместимы с самым тупым режимом: если записать им "ABC123" то они именно это и выведут.
И так как ESC последовательности требовали драйвера (а в реалиях доса это означало "поддержки со стороны софта") а оно было не всегда, то вполне удобно было "copy foo.txt PRN" (или как-то так) и по LPT документ отправлялся на принтер и всегда там печатался:)
Из всех "языков описания страницы" у консьюмерских принетов сейчас выжили только PCL и PostScript. У MS, говорят, есть принтеры которые умеют GDI и XPS, но я их не видал.
guest8 15.07.2018 01:19 # −999
guest8 15.07.2018 01:20 # −999
roskomgovno 15.07.2018 01:26 # −1
guest8 15.07.2018 15:13 # −999
guest 29.05.2010 04:29 # +4
педрило детектед
может у тебя еще и виндус русское?
guest 29.05.2010 10:17 # +1
я особо не заморачиваюсь, я ебаный полиглот, хоть на ебаном немецком, блядь.
Lure Of Chaos 29.05.2010 17:41 # 0
guest 29.05.2010 18:33 # 0
guest 29.05.2010 21:21 # −1
theos 29.05.2010 01:42 # −1
Мистер Хэнки 28.05.2010 20:59 # 0
theos 29.05.2010 01:42 # 0
guest 28.05.2010 22:28 # 0
наверное можно было читать сразу в StringBuilder, а потом StringBuilder.ToString
theos 29.05.2010 01:41 # 0
guest 29.05.2010 01:45 # +1
функция pinvoke или родной .net? вроде и там и там можно читать "одним махом" в StringBuilder, pinvoke-то точно.
theos 29.05.2010 01:51 # 0
guest 30.05.2010 16:28 # −5
guest 30.05.2010 17:11 # −5
guest 30.05.2010 17:22 # −5
guest 30.05.2010 21:23 # −6
guest 10.08.2012 12:16 # 0
guest8 14.07.2018 23:30 # −999
roskomgovno 14.07.2018 23:31 # 0
guest8 14.07.2018 23:36 # −999
nojloBou_xyu 14.07.2018 23:44 # 0
roskomgovno 14.07.2018 23:50 # 0
Во-первых сильно усложнится пул строк: придется делать copy on write.
Во-вторых начнется ад в тех местах, где строки являются ключами.
Что теперь лежит в "dictionary"?
guest8 15.07.2018 00:06 # −999
guest8 15.07.2018 00:26 # −999
roskomgovno 15.07.2018 00:32 # 0
Вообще виртуальные машины много чего делают если это прозрачно для программиста: к примеру они вообще могут положить строку в стек, если в ней три буквы и ссылок на нее нет.
Но хороший программист на C#, вероятно, не должен даже пытаться на это как-то завязываться.
Для него строки лежат в куче (в пуле интернированных строк, если литералы) и иммутабельны. Вот.