Раньше писал на Паскале и привык к нему в том плане, что
" 1)Сначала описал переменные (глобальные, локальные там есть тоже, но было достаточно удобно работать с глобальными, если в этом есть необходимость само собой, я в глобальные не впихивал всё подряд)
2) Потом я писал разные процедуры для программы. Эти процедуры могли работать с этими переменными и обмениваться ими.
Решил несколько дней назад начать осваивать С#, вот и столкнулся с такой вот проблемой
В одном классе выполняю какие либо операции над переменными, например над массивом. А вот как эти же значения использовать в другом классе?
Я понимаю, что это мне просто непривычно после паскаля... .
Объясните пожалуйста, чем подробнее и понятнее тем лучше, как мне справиться с этой проблемой и как лучше поступать при написании программы
Другие языки программирования и технологии
С# обмен данными между классами, как это осуществить?
Глобальные переменные на Паскале - статические члены никогда не создаваемого класса в С#. Это если совсем нельзя без этого.
Ваша проблема типична для перехода с процедурного программирования на объектно-ориентированное. От языка не зависит.
Моя рекомендация: напишите тестовый проект на Паскале с использованием классов и НЕ ИСПОЛЬЗУЯ глобальные переменные. На практике поймете, как группировать процедуры и данные, называя это классами.
ОО решение работы над массивами в разных классах:
1. описать типы: массив, класс1, класс2
2. создать и инициализировать объект типа массив
3. при необходимости сделать что-либо с массивом передать его функциям в классах по ссылке (функции скорее всего будут статическими)
Ваша проблема типична для перехода с процедурного программирования на объектно-ориентированное. От языка не зависит.
Моя рекомендация: напишите тестовый проект на Паскале с использованием классов и НЕ ИСПОЛЬЗУЯ глобальные переменные. На практике поймете, как группировать процедуры и данные, называя это классами.
ОО решение работы над массивами в разных классах:
1. описать типы: массив, класс1, класс2
2. создать и инициализировать объект типа массив
3. при необходимости сделать что-либо с массивом передать его функциям в классах по ссылке (функции скорее всего будут статическими)
Передавай их в виде формальных параметров.
Создаешь объект класса (если он не статический) и присваиваешь переменным значения, а потом вызываешь методы. Присваивать можешь через автоматические свойства {set; get;}.
Хм. В сисярпе я сроду не работал, но чисто теоретически. . ООП же. Объявлять переменные можно в том же неймспейсе, где объявляешь экземпляры классов, и потом подпихивать их любому из этих самых экземпляров, какому хочешь. Ты обрабатываемые значения свойствами пихал, что ли? Не прайватовыми хоть?
Ну вот смотри. . К примеру:
public class MyClass { /*какие-то свойства*/ public int myFunc(double a); }
public class StartupClass {
static void Main()
{
MyClass g = new MyClass();
double f = 2.34;
int s = g.myFunc(f);
}
}
Создал экземпляр MyClass и передал его методу созданную мной же переменную f. Пусть шарписты отсюда подскажут, как это точнее оформить, чтобы заработало. Реализация myFunc, естессна, нужна, а не только объявление.
P.S. Ненавижу ООП.
Ну вот смотри. . К примеру:
public class MyClass { /*какие-то свойства*/ public int myFunc(double a); }
public class StartupClass {
static void Main()
{
MyClass g = new MyClass();
double f = 2.34;
int s = g.myFunc(f);
}
}
Создал экземпляр MyClass и передал его методу созданную мной же переменную f. Пусть шарписты отсюда подскажут, как это точнее оформить, чтобы заработало. Реализация myFunc, естессна, нужна, а не только объявление.
P.S. Ненавижу ООП.
Сделай их открытыми
public int d;
и класс наследуйте. Почитайте о наследовании классов. В любой книге по шарпу, начинают объяснять с начала классы.
public int d;
и класс наследуйте. Почитайте о наследовании классов. В любой книге по шарпу, начинают объяснять с начала классы.
Похожие вопросы
- Обмен данными между datagrid viewи базой данных
- обмен данными C# и надежность жесткого диска
- Обмен данными между формами C#
- Как вы называете файлы / модули / классы, которые читают / сохраняют данные на диск?
- Статичная функция внутри класса. какие данные будут доступны всем образцам класса?
- Вопрос по дробления программы на файлы и классам. На данных условиях, как будет выглядеть структуризация?
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- c++: можно ли передать в класс адрес, описанного в нём элемента данных?
- Как это можно программно осуществить?
- ООП это когда данные управляют кодом а функциональное когда код данными?