- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
#region копирование в буфер
private void copia_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < listBox1.Items.Count; i++)
{
sb.Append(listBox1.Items[i].ToString());//Добавляем строчку из листБокса
sb.Append((char)13);//Перенос строки
sb.Append((char)10);//Перевод каретки
}
Clipboard.SetText(sb.ToString());//Отправляем всё в КлипБорд
}
#endregion
#region Сохранить в файл
private void save_Click(object sender, EventArgs e)
{
saveFileDialog1.DefaultExt = ".txt";
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Координаты";
saveFileDialog1.Filter = "Text Files|*.txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < listBox1.Items.Count; i++)
{
sb.Append(listBox1.Items[i].ToString());//Добавляем строчку из листБокса
sb.Append((char)13);//Перенос строки
sb.Append((char)10);//Перевод каретки
}
sw.WriteLine(sb);
sw.Flush();
sw.Close();
}
}
#endregion
Говногость 12.05.2010 13:06 # 0
Хоть не понос.
Lure Of Chaos 12.05.2010 13:21 # 0
Lennis 12.05.2010 14:51 # 0
koodeer 12.05.2010 14:51 # 0
пишем
Сохранение в файл:
Так?
Lure Of Chaos 12.05.2010 15:37 # 0
This is obvious 12.05.2010 16:20 # 0
Lure Of Chaos 12.05.2010 17:18 # +1
Lennis 12.05.2010 17:24 # +1
Lure Of Chaos 12.05.2010 17:32 # 0
Lennis 12.05.2010 19:16 # 0
cfdev 12.05.2010 19:26 # 0
Лучше всё-таки юзать foreach, он проверяет collection._version и в случае чего сразу выкинеть InvalidOperationException, .
Lennis 12.05.2010 19:38 # 0
Lure Of Chaos 12.05.2010 19:55 # +2
Lennis 12.05.2010 20:13 # −1
Используя foreach вы создадите еду для габидж колектора (класс энумератора). При теоретическом изменении коллекции процесс прекратится екзепшном.
Используя цикл фор вы создадите одну лишнюю 4х байтную переменную. И при теоретическом изменении коллекции процесс пройдет нормально (Count вернет точное количество элементов в массиве)
cfdev 12.05.2010 21:45 # +3
Ололо, энумератор - структура, хранится в стеке. ВНЕЗАПНО: public struct Enumerator : IEnumerator, IDisposable, IEnumerator<T>
> И при теоретическом изменении коллекции процесс пройдет нормально (Count вернет точное количество элементов в массиве)
Да ну? Поток #1 получил значение collection.Count, сравнил с i, условие верно => вошёл в блок цикла. В это же время другой поток удалил/добавил один объект. Первый поток, УЖЕ будучи в итерации, до сих пор считает, что объектов 4, а не 3 или 5. В итоге непонятные баги и прочее (итерация продолжается дальше потому что). А с foreach сразу ясно, что ошибка в синхронизации (хотя непонятные баги тоже могут вылезти, но вероятность меньше).
Lure Of Chaos 12.05.2010 21:56 # +1
с вами согласен, в яве (от шарпа я убег едва познакомившись) именно так.
cfdev 12.05.2010 21:59 # 0
почему?
Lure Of Chaos 12.05.2010 22:10 # 0
2. слишком длинные имена.
3. вообще дотнет значит мелкософт и виндоуз, а это секта. То бишь если повязать себя с ним, то заставят и другие мелкософт-решения юзать. Даешь свободу в опенсорсе и кроссплатформенности!
4. многое слизано с той же явы, но по-своему и не всегда удачно
ну и еще 100 ньюансов (лень перечислять), из за которых я сказал дотнету:"изыди!"
не хочу будоражить холивареров, но ЛИЧНО мне ява приятнее со всеми ее недостатками
cfdev 12.05.2010 22:17 # +2
2. В смысле?
3. Ну это фигня, моно давно вышла в продакшн-режим, от МС не зависит.
4. Если взглянуть со стороны, то то, что "слизано с явы", было придумано ещё лет за 20 до явы. Чего только ява не слизала...
> ну и еще 100 ньюансов
Ну эти нюансы все какие-то несерьёзные.
Вот я выбрал моно потому что:
1) можно собрать в натив в один экзешник
2) простой доступ к C api.
3) скорость за счёт классов в стеке, т.е. структур
4) большая продуктивность засчёт компонентно-ориентированности (евенты, свойства, и т. д.)
(мне эти четыре пункта важнее нейминг конвеншонз)
Кросплатформ вообще хрень в том числе и у явы. Порой легче написать что-то кросплатформенное на си, чем пытаться собрать в кучу яву, JNI, HERNI и прочий шлаг вместе под каждую платформу.
Lure Of Chaos 12.05.2010 22:41 # 0
2. ну, из головы пример: modify() короче и приятнее чем AddSingleNameModifier()
3. моно еще не так полон, как дотнет
4. хотя бы ява сделала это более-менее удобно. Или мне так показалось - с первого взгляда, и кажется до сих пор
Насчет потому что: меня заинтересовал D, в качестве "продвинутого" нативного С, но не столь сложного, как С++
cfdev 12.05.2010 22:52 # 0
ничо не нравится. и как же жить теперь?
> А ClassA.ClassB - это внутренний класс или статическая переменная?
Ну вам прямо не угодишь. Сделал майкрософт венгерскую нотацию - жаловались. Убрали все вспомогательные префиксы - опять жалуются. Одни жалуются на I в IDisposable. Другие жалуются, что нет A у абстрактных классов. КАКИХ ИХ РАЗЛИЧАТЬ??!!!
> А ClassA.ClassB - это внутренний класс
В сишарпе внутренние классы редко используются, не существенно.
> А ClassA.ClassB - это внутренний класс или статическая переменная?
Если сидеть с интеллисенсом, то таких проблем совсем нет. Я даже не помню ни разу, чтобы вот сидел и думал: это свойство или статическая переменная или класс?.. Сразу как-то всё понятно. (там для особо вдумчивых картинки для каждого типа сделали, сразу видно, что где)
> 3. моно еще не так полон, как дотнет
Да ну? clr2.0 реализован весь за исключением пары редко исопльзуемых методов и классов. А больше и не надо.
cfdev 12.05.2010 22:34 # 0
Аналогию не понял. "Кот васька" это скорее объявление переменной "васька" класса "Кот". Вот это почему-то в обоих языках вас не смущает :) По такой аналогии (с естественными языками) классы должны писаться с маленькой буквы, а instances - с большой. (Напр., как в русском языке: "президент" как класс и "Президент" как какой-то конкретный президент.)
Да и лично на мой вкус выглядит солиднее, идентификаторы с маленькой буквы ассоциируются с локальными переменными . Почему имена публичных методов, интерфейсов, "идущих в свет", должны прибедняться и идти с маленькой буквы? :)
Lure Of Chaos 12.05.2010 22:55 # 0
скромность - сестра таланта ))
Lennis 13.05.2010 13:28 # 0
Если же количество элементов увеличилось то цикл пройдет без екзепшна (Что мне тоже кажется логичным)
Lennis 13.05.2010 13:45 # 0
Сами посмотрите
System.Windows.Forms.ListBox.ItemArray.E ntryEnumerator
private class EntryEnumerator : IEnumerator
cfdev 12.05.2010 21:56 # 0
для этого случая это не так важно, что выделяется память, проход по коллекции контрола по идее не должен совершаться очень часто (в отличие от, например, прохода по коллекции спрайтов, чтобы отрисовать 2д).
guest 21.05.2010 23:23 # 0
cfdev 12.05.2010 19:17 # +3