Тема: С# в питаннях та відповідях

Ответить в теме
Страница 2 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 21 по 40 из 70
  1. Вверх #21
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    Цитата Сообщение от Guffy Посмотреть сообщение
    Предлагаю спуститься с высот "откуда угодно" на грешную землю темы топика - шарпа. И в этом случае мне не остается ничего другого как предложить Вам подумать еще раз.
    сразу два вопроса.
    1. почему я должен спустится с высот "откуда угодно"? чем они плохи? или шарп настолько гениален, что перестает следовать обшим понятиям компютерной науки?

    2. над чем мне вы предлагается подумать? самое интересное вы и не написали.

    теперь о вашем отрывке, язык шарп я не знаю, если бы вы смогли ту же мысль на с++ изложить был бы разговор.


  2. Вверх #22
    Не покидает форум Аватар для YOKO
    Пол
    Мужской
    Адрес
    Одеса, Україна
    Возраст
    45
    Сообщений
    5,452
    Репутация
    730
    Хлопці, я категорично проти, щоб ви лаялися!

    Вам просто треба домовитися з визначеннями.
    Що таке массив, а що просто врапер.

    Якщо щось дуже схоже на массив, бо має схожу структуру і принципи роботи, але в ньому елементи в памяті розміщені не підряд - це вже не масив.
    Принаймні, ТАК було раніше завжди.
    Тут могла бути ваша реклама

  3. Вверх #23
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    абсолютно согласен.
    данные расположены последовательно, что гарантирует равнобыстрый доступ по индексу, все - массив. а то что это враппер, или даже не класс а совоkупность классов или некий API. это уже вторично,
    так что ArrayList - массив. никаких сомнений у меня лично нет.

  4. Вверх #24
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    Дело в том, панове, что выше приведенный пример демонстрирует следующий результат
    Код:
    10 10 10
    11 10 10
    Оба враппера не показывают того же поведения что и массив при как бы том же синтаксисе использования. Все это происходит потому, что структура в шарпе - Value Type. А эти типы копируются при возращении из функции - в данном случае из индексатора. И метод inc структуры во втором и третьем случае вызывается для копии.
    О чем это говорит? в шарпе враппер не может дать прямой доступ к элементам массива в некоторых случаях. Соттвественно он не реализует полного поведения массива. Значит враппер - не массив.

    А Ull9 смотрит с высоты общих знаний, и взгляд его преломлен под впечатлением С++.
    Сравните индексаторы С++
    Код:
    class LikeCSharp
    {
    int* arr;
    public:
    int operator[](int idx) {return arr[idx]; }
    }
    
    class UsualCpp
    {
    int* arr;
    public:
    int& operator[](int idx) {return arr[idx]; }
    }
    Чувствуете разницу в возвращаемом значении?
    Для Value Type в шарпе получается именно первый вариант.
    Вот поэтому каждый язык не стоит всегда рассматривать с позиции общих знаний.

  5. Вверх #25
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    зы: на самом деле ArrayList "боксирует" валуе-типы, однако реальный пример показывает, что при приведении типа из object к структуре последняя все равно копируется.

  6. Вверх #26
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    опять не вижу в чем проблема?

    вопрос: можно ли написать враппер который имеет абсолютно одинаковое поведение с массивом? мой ответ да.

    вопрос: можно ли написать враппер который имеет не одинаковое поведение с массивом? мой ответ да.

    ну и?

  7. Вверх #27
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    на плюсах - не вопрос
    на шарпе - я привел пример в чем затруднение. <- апд: можете опровергнуть?

  8. Вверх #28
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    думаю спор окончен. если на шарпе невозможно написать класс, полностью имитирующий массив, то - хорошо что я его не знаю...

  9. Вверх #29
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    А спора и не было, уважаемый. Вы просто, извините, встряли в конкретную область с позиции общих знаний и хотели что-то доказать. Вот и все.
    Как эпилог я бы сказал, что шарп (и дотнет в целом) просто имеет свои плюсы и минусы. А по плюсам можно подискутировать в отдельном топике, если имеете желание.

  10. Вверх #30
    Не покидает форум Аватар для YOKO
    Пол
    Мужской
    Адрес
    Одеса, Україна
    Возраст
    45
    Сообщений
    5,452
    Репутация
    730
    Хлопці хто перший скаже чого я тупікую, тому "пьятьорка" з занесенням.

    Значить так, відкриваю і читаю *.csv файл.
    (Нагадую, це звичайний текстовий файл який імітує "Ексель", колонки розділені знаком ";")

    Мені потрібно "видрати" назви колонок і занести їх до комбо.

    Я роблю це так:
    string file = File.ReadAllText(textBox1.Text);
    string[] parts = file.Split(new char[] { ';','\r' });

    int cur = 0;
    while (parts[cur]!='\r'.ToString())
    {
    columns.Items.Add(parts[cur]);
    cur++;
    }
    Іншими словами, я "біжу" по файлу поки не зустріну "перенос каретки",
    а по дорозі все що зчитую інтерпретую як колонку і заношу до комбо.

    Але чомусь цикл не зупиняється, до кінця файла.

    Для повноти картини можу викласти проект.
    Функція повішена на перший "Open" решту кнопок можна не чіпати,
    функціональність там ще не реалізована.
    Вложения
    Последний раз редактировалось YOKO; 08.10.2007 в 15:18.
    Тут могла бути ваша реклама

  11. Вверх #31
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    Цитата Сообщение от Guffy Посмотреть сообщение
    А спора и не было, уважаемый. Вы просто, извините, встряли в конкретную область с позиции общих знаний и хотели что-то доказать. Вот и все.
    удивлен.
    спор был.
    конкретно об этом; вы сказали что класс и массив это "теплое и мягкое".
    говоря нормальным эзыком вы сказали что это вещи ортогональные. так?

    я на это возразил
    я с этим поспорил
    и вы со мной согласились.

  12. Вверх #32
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    Цитата Сообщение от YOKO Посмотреть сообщение
    Хлопці хто перший скаже чого я тупікую, тому "пьятьорка" з занесенням.

    Значить так, відкриваю і читаю *.csv файл.
    (Нагадую, це звичайний текстовий файл який імітує "Ексель", колонки розділені знаком ";")

    Мені потрібно "видрати" назви колонок і занести їх до комбо.

    Я роблю це так:



    Іншими словами, я "біжу" по файлу поки не зустріну "перенос каретки",
    а по дорозі все що зчитую інтерпретую як колонку і заношу до комбо.

    Але чомусь цикл не зупиняється, до кінця файла.

    Для повноти картини можу викласти проект.
    Функція повішена на перший "Open" решту кнопок можна не чіпати,
    функціональність там ще не реалізована.
    я бы это сделал так
    Код:
                List<string[]> lines=new List<string[]>();
                using(StreamReader reader =new StreamReader("file.csv"))
                {
                    string line;
                    char[] separator=new char[] {';'};
                    while(null!=(line=reader.ReadLine()))
                    {
                        lines.Add(line.Split(separator));
                    }
                }
                //lines[0] - column names
                //lines[1]...lines[n] -data

  13. Вверх #33
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    Цитата Сообщение от Ull9 Посмотреть сообщение
    удивлен.
    спор был.
    конкретно об этом; вы сказали что класс и массив это "теплое и мягкое".
    говоря нормальным эзыком вы сказали что это вещи ортогональные. так?

    я на это возразил
    я с этим поспорил
    и вы со мной согласились.
    в контесте топика - класс и массив - ортогональные

  14. Вверх #34
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    поясни.

  15. Вверх #35
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    топик о чем - о шарпе.
    на шарпе нельзя классом (враппером) полностью повторить поведение массива? - для структур нельзя.
    значит класс!=массив.

  16. Вверх #36
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    19,028
    Репутация
    1490
    ну я шарп не знаю.
    но неужели нельзя класс написать что полностью массив функционально повторил?

    блин, тьфу на шарп.
    ps но что то гложут меня сомнения, так ли это. действительно шарп не может классом повторить массив?
    Последний раз редактировалось Ull9; 08.10.2007 в 17:15.

  17. Вверх #37
    Живёт на форуме Аватар для firejump
    Пол
    Мужской
    Сообщений
    3,144
    Репутация
    373
    Цитата Сообщение от YOKO Посмотреть сообщение

    ps. вибачаюся що встряю в диспут великих, але здається в шарпі не має типів даних як таких,
    там ВСЕ - класи. Той же int, char, string і т.д.
    В принципе коллеги писали об этом, но хотелось бы подчеркнуть, что в Шарпе есть важное отличие ссылочных типов (reference type) от структурных(value type).
    Фактически те типы, которые вы привели это структурные типы (int,char и так далее), исключением является string (вот он и есть класс и ссылочный тип, а int и char это псевдонимы для существующих структур)
    Viva La Barca !!! We are the champions :)

  18. Вверх #38
    Не покидает форум Аватар для YOKO
    Пол
    Мужской
    Адрес
    Одеса, Україна
    Возраст
    45
    Сообщений
    5,452
    Репутация
    730
    Значить так, розібрався я з попереднім питання.

    Тепер наступне.

    У контролів є поле backcolor.
    Як його наприклад зробити червоним?
    Хотів присвоювати щось R G B, але вони "рідонлі".

    Тобто mycontrol.backcolor.R=124; не напишеш.
    Тут могла бути ваша реклама

  19. Вверх #39
    Посетитель
    Пол
    Мужской
    Сообщений
    286
    Репутация
    31
    public override Color BackColor { get; set; }

    myControl.backcolor = Color::Black;

    read msdn

  20. Вверх #40
    Не покидает форум Аватар для YOKO
    Пол
    Мужской
    Адрес
    Одеса, Україна
    Возраст
    45
    Сообщений
    5,452
    Репутация
    730
    Цитата Сообщение от Jonni555 Посмотреть сообщение
    public override Color BackColor { get; set; }

    myControl.backcolor = Color::Black;

    read msdn
    Читав я МСДН, та нічого там не знайшов.

    Не був підкючений using System.Drawing;
    Вже все ок. Сенкс!
    Последний раз редактировалось YOKO; 09.10.2007 в 15:56.
    Тут могла бути ваша реклама


Ответить в теме
Страница 2 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения