Loading...
bortom avatar bortom 1 Точки

Arrays. Lab Problem 7 Sum Arrays

Здравейте колеги, дали някой може да ми обясни защо двата кода се "държат" различно. Това е задача 7 (sum arrays) от урока за масиви. И в 2та кода използвам метод (GetSum) за изчисляване на сумата на елементите от 2та масива, като използвам трети масив (sumOfNumbers). В първият вариант, към метода подавам 3 масива, а във вторият 2 масива, като sumOfNumbers го инициализирам пак в метода. При дебъгване и при двата варианта sumOfNumbers в Main метода се променя при въртенето на цикъла в GetSum метода, но при първия вариант при излизането от GetSum елементите на масива sumOfNumbers си запазват стойностите, а при втория се променят на 0.

https://pastebin.com/GaKtJL8P

https://pastebin.com/yzTJrTJ6

Тагове:
0
Fundamentals Module
k.sevov avatar k.sevov 1077 Точки

При втория вариант имаш два различни масива. Единият е в мейн метода, при който всички елементи се инициализират в началото с дефолтна стойност 0 и си остават така до края на изпълнението на програмата. Другият е в GetSum метода, тъй като когато го декларираш на 39-ти ред се създава нов масив, който няма нищо общо с този в мейна (освен същото име). След като излезеш от GetSum метода този масив изчезва заедно с промените, които си правил по него, а в дебъгера вече виждаш масива от мейн метода с дефолтните стойности. Ако искаш да използваш един и същи обект в мейн метода и в някой метод, който се извиква оттам, то трябва да го подадеш като параметър на метода, за да може той да има достъп до него (или да си държиш обекта в статична променлива на класа, но има време за тези неща). 

0
bortom avatar bortom 1 Точки

Това го разбирам, просто ме обърква, че когато пусна дебъгера във VS и пинна елементите на sumOfNumbers в Main метода и почна стъпка по стъпка да преминавам през кода с F11 и когато вляза във GetSum, този масив който е в Mian и както казваш няма общо с този който е в GetSum, почва да се променя заедно с масива в GetSum, а не би трябвало...

0
31/05/2018 10:49:14
k.sevov avatar k.sevov 1077 Точки

Това се получава поради еднаквите имена и особеностите на дебъгера - реално се променя само масива в метода, но просто дебъгера ти го показва на мястото на пиннатия масив от мейна заради същото име. Дай им различни имена на двата масива и разгледай как се държи дебъгера в този случай.

0
31/05/2018 10:58:39
bortom avatar bortom 1 Точки

По всяка вероятност се случва копиране на името във VS при дебъгване. Обърка ме и ме наведе на мисълта, че и по този начин мога да променям масиви.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.