На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 195 196 [197] 198 199 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата IL_Agent @
    В любом случае,в C# вызов метода объекта никак не может быть эквивалентен оператору =.

    А что в С# выполняет оператор = ? :huh:
      Цитата KILLER @
      Почему одно изменится, другое нет? И где там написано ref/value ?

      И ещё раз.
      В первом случае меняется переменная в методе str.
      Во втором - посредством вызова метода меняется объект, доступ к которому осуществляют переменные. А сами переменные не меняются.

      Добавлено
      Цитата KILLER @
      А что в С# выполняет оператор = ? :huh:

      Как ни странно, присваивание значения переменной.
        Цитата IL_Agent @
        Как ни странно, присваивание значения переменной.

        Ок, тогда поясни, str внутри метода public void Foo(String str) - это str которая была передана из Bar ? Верно ведь? Мы ведь этой переменной присваиваем значение, почему она не изменится? Кто откатит наши изменения? или оно не присвоится и вывалится ошибка на стадии компиляции?

        Добавлено
        Внутри функции Foo, после присваивания, str будет ведь равна - "abcdef", а не "cdefgh"? Если так, то кто и занафига откатил изменения, при выходе из метода Foo? мы ведь не с копией работали :wacko:

        Добавлено
        Цитата IL_Agent @
        В первом случае меняется переменная в методе str.
        Во втором - посредством вызова метода меняется объект, доступ к которому осуществляют переменные. А сами переменные не меняются.

        Немного не понял, ты тут просто запутался в словах, я сам не додумал что ты имел ввиду, можешь плз перефразировать...
          Цитата KILLER @
          Ок, тогда поясни, str внутри метода public void Foo(String str) - это str которая была передана из Bar ? Верно ведь?

          Конечно нет. Это две разные переменные, из разных областей видимости. Если одной из них мы присвоим другой объект - это никак не скажется на второй.

          Добавлено
          Цитата KILLER @
          ты тут просто запутался в словах

          С чего ты взял ?
          Цитата KILLER @
          я сам не додумал что ты имел ввиду, можешь плз перефразировать...

          Если расскажешь, как надо строить фразы, чтобы ты додумывал - попробую :)
            Цитата IL_Agent @
            Конечно нет. Это две разные переменные, из разных областей видимости. Если одной из них мы присвоим другой объект - это никак не скажется на второй.

            Так! Я окончательно запутался, как это нет? А как же тогда работает пример с public void Foo(FooClass foo), разве не получается ли, что мы меняем состояние, с помощью метода, вообще другой переменной? У них же разные области видимости и т.д.?

            Добавлено
            Цитата IL_Agent @
            С чего ты взял ?

            С того:
            Цитата

            В первом случае меняется переменная в методе str.

            str - это не метод как минимум, в приведенном примере выше.
            Цитата

            Во втором - посредством вызова метода меняется объект, доступ к которому осуществляют переменные. А сами переменные не меняются.

            Что за переменные, что они хранят? И где там объект? :wacko:
              Цитата KILLER @
              метода, вообще другой переменной

              Переменные - это не объекты. У них нет методов. :) Переменные осуществляют доступ к объектам.

              Добавлено
              В нашем случае - к одному и тому же.

              Добавлено
              Цитата KILLER @
              В первом случае меняется переменная в методе Foo.

              fixed

              Добавлено
              Цитата KILLER @
              Что за переменные

              str
              Цитата KILLER @
              что они хранят?

              Если угодно употреблять слово "хранят", то ссылки.
              Цитата KILLER @
              И где там объект?

              foo
                Цитата IL_Agent @
                Если угодно употреблять слово "хранят", то ссылки.

                Хорошо, тогда что хранят переменные типа int ? Ссылки на объекты или же значения?
                  Цитата IL_Agent @
                  Никаких усилий. Если ref - присваиваеися тот же самый объект, если value - копия. Мозговые усилия - это когда разбираешь код конструктора копирования / оператора присваивания.

                  Ну, на счёт мозговых усилий при разборе кода конструктора - это, будем считать, ты не говорил. :) Объясни другое: почему синтаксис языка (C#) допускает неявность семантики переменной? И (как я уже отмечал выше) мне необходимо точно знать семантику типа, чтобы точно предсказывать, к чему приведёт код, который я пишу. В смысле, будет модификация оригинала объекта, или его копии.
                    Цитата KILLER @
                    Хорошо, тогда что хранят переменные типа int ? Ссылки на объекты или же значения?

                    Неважно. Можно считать, что ссылки. Просто при присваивании создаётся новый объект.
                    Вообще с помощью переменных осуществляется доступ к объекту. Слово "хранят" тут не очень уместно. В С++ - да, т.к. переменная там - именованная область памяти.

                    Добавлено
                    Цитата Flex Ferrum @
                    Ну, на счёт мозговых усилий при разборе кода конструктора - это, будем считать, ты не говорил.

                    А что, компилятор С++ не позволяет написать гавнокод в конструкторе ?
                      Цитата IL_Agent @
                      А что, компилятор С++ не позволяет написать гавнокод в конструкторе ?

                      Говнокод позволяет написать любой язык. Ты лучше на другую часть вопроса ответь.
                      Сообщение отредактировано: Flex Ferrum -
                        Цитата Flex Ferrum @
                        Говнокод позволяет написать любой язык. Ты лучше на другую часть вопроса ответь.

                        Вопрос: как узнать, как поведёт себя присваивание.
                        c# - посмотреть тип переменной.
                        c++ - разобрать гавнокод кк /operator =.
                          Цитата IL_Agent @
                          Неважно. Можно считать, что ссылки. Просто при присваивании создаётся новый объект.

                          Для меня важно, просто в делфях, переменая типа int как раз таки хранит в себе значение а не ссылку на значение, а вот ClassFoo там будет хранить ссылку на объект, поэтому я и поинтересовался...

                          Добавлено
                          Цитата IL_Agent @
                          Вопрос: как узнать, как поведёт себя присваивание.
                          c# - посмотреть тип переменной.
                          c++ - разобрать гавнокод кк /operator =.

                          Неправильно, С++ - почитать документацию к этой функции... ;)
                            Цитата IL_Agent @
                            Вопрос: как узнать, как поведёт себя присваивание.
                            c# - посмотреть тип переменной.
                            c++ - разобрать гавнокод кк /operator =.

                            Эммм... Передёргиваешь. В C++ ответ на этот вопрос - посмотреть на объявление переменной. Если ссылка/указатель - поведение одно. В противном случае - другое.

                            И таки да, я имел в виду не присваивание, а вызов модифицирующего метода.
                            Сообщение отредактировано: Flex Ferrum -
                              Цитата KILLER @
                              Для меня важно, просто в делфях, переменая типа int как раз таки хранит в себе значение а не ссылку на значение, а вот ClassFoo там будет хранить ссылку на объект, поэтому я и поинтересовался...

                              Ну я за Делфи говорить не берусь. В c# нет работы с памятью на физическом уровне. Что, где и как "хранится" - от этого мы абстрагируемся.

                              Добавлено
                              Цитата Flex Ferrum @
                              В противном случае - другое.

                              В противном случае - разобрать гавнокод кк /operator = :)

                              Цитата Flex Ferrum @
                              И таки да, я имел в виду не присваивание, а вызов модифицирующего метода.

                              А с ним что ? Он одинаково модифицирует что value-, что reference- объект. Просто в случае с value- внутри функции мы уже модифицируем другой объект, копию передаваемого.
                              Сообщение отредактировано: IL_Agent -
                                Цитата IL_Agent @
                                В противном случае - разобрать гавнокод кк /operator =

                                Странно, лично мне не приходилось страдать таким <_< Помойму ты что то путаешь, или мы сейчас рассматриваем код, который пишет человек, который вот уже 3-ий день изучает С++ по учебнику "Выучи С++ за 21 день" ?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 195 196 [197] 198 199 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3065 ]   [ 14 queries used ]   [ Generated: 1.08.26, 04:39 GMT ]