Как накопить значение в другом классе с помощью C#?
Привет! Я знаю, что это будет основной вопрос для вас, но я пытаюсь создать код, в котором класс под названием "Program2" передавал бы значение классу под названием "Holder", а Holder предполагал бы накапливать значение, передаваемое Program2. И как только я получу значение от Держателя, оно должно быть добавлено на 1. Надеюсь, в этом есть смысл. Чтобы лучше понять мои цели для этого кода, я включу текущий вывод и желаемый вывод. Я также включил фактический код для Program2 и Holder ниже. Обратите внимание, что я действительно Новичок в кодировании, поэтому, пожалуйста, оголитесь с моими объяснениями и терминологией кодирования.
Мой вывод прямо сейчас таков:
**********Первая Петля**********
Тотальный диктант: 3
Это выход, полученный из класса держателя: 3
Общий цикл пройден 1-й раз: 4
**********второй цикл**********
Это выход, полученный из класса держателя: 3
Общий цикл пройден 1-й раз: 4
То, что я хочу, чтобы результат был таким:
**********Первая Петля**********
Тотальный диктант: 3
Это выход, полученный из класса держателя: 3
Общий цикл пройден 1-й раз: 4
**********второй цикл**********
Это выход, полученный из класса держателя: 6
Общий цикл пройден 1-й раз: 7
Как вы можете видеть из моего желаемого вывода, я хочу, чтобы второй цикл добавлял/накапливал количество циклов, которые производит цикл foreach. И, надеюсь, он будет просто продолжать накапливать значение по мере прохождения третьего или четвертого цикла.
Что я уже пробовал:
Ниже приведен код для Program2:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestCode { class Program2 { private static int x = 0; static void Main() { int[] array = new int[] { 1,2,3}; foreach (int element in array) { x++; } Console.WriteLine("**********First Loop**********"); Console.WriteLine("Total loop: {0}", x); Holder h1 = new Holder(); h1.setValue(x); h1.display(); Console.WriteLine("Total loop passed 1st time: {0}",h1.getValue()); SecondLoop(); Console.ReadKey(); } public static void SecondLoop() { Console.WriteLine(); Console.WriteLine("**********Second Loop**********"); Holder h1 = new Holder(); h1.setValue(x); h1.display(); Console.WriteLine("Total loop passed 2nd time: {0}", h1.getValue()); } } }
Вот код для держателя:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestCode { public class Holder { private int x = 0; public Holder() { } public void setValue(int x1) { x = x1; } public int getValue() { return x+1; } public void display() { Console.WriteLine("This is the output produced from Holder Class: {0}",x); } } }
Не стесняйтесь предлагать лучшие альтернативы для этого, чтобы получить желаемый результат, о котором я упоминал выше. Это может быть совершенно другой подход, или вы можете в основном создать код, который я написал.