Всем привет друзья.
пишу робота под америку и столкнулся вот с такой проблемой:
писал всегда на СИ подобном языке )) МКЛ это усеченный до нельзя СИ. и тем не менее все хорошо писалось..
сейчас же пишу под нинзю, а в нинзе си шарп. и вот с такой задачей уже долгое время не могу справиться:
как писал на МКЛ:
создаю структуру:
//--------------------------------------------------------------------------------------------
struct sDataBar { ... };
//--------------------------------------------------------------------------------------------
создаю 2 экземпляра стуктуры:
sDataBar OsnDataBar; // Структура с ДАННЫМИ на баре для основного ТФ
sDataBar HlpDataBar; // Структура с ДАННЫМИ на баре для вспомогательного ТФ
далее в теле программы:
передаю в цикле на каждый бар обе структуры
MathDataForBar(OsnDataBar, i, 1);
MathDataForBar(HlpDataBar, i, 2);
в самой функции принимаю структуру так:
void MathDataForBar(sDataBar &DataBar,int i, int variant)
{
...
//делаю с данными шпили вили ))
...
}
ключевая фишка в СИ это передача по ссылке &
я просто передаю в функцию указатель на необходимую мне структуру, и уже непосредственно в функции работаю с той структурой — ссылку на которую передал.
но блин не тут то было в СИ ШАРПЕ (( заветная & нифига не работает ((
а читать пруфы не могу ибо туп (( мне надо на пальцах ((
люди добрые программисты, если вы есть, и если вы можете для чайника на пальцах описать как это воплотить в шарпе — буду крайне признателен и благодарен!
Если вам нужно менять структуру в методе, передавая её как параметр, то есть ключевые слова ref и out.
Передача по ссылке применяется только для того, чтобы изменить в методе и получить это изменение снаружи.
Кроме того, в C# есть разница между Value и Reference type сущностями.
Вторые всегда передаются по ссылке, поэтому & не требуется.
Но Struct — это value type.
Тихая Гавань, тогда определяйте метод так
void MathDataForBar(ref sDataBar DataBar,int i, int variant) { ... //делаю с данными шпили вили )) ... }А вызывайте его так
Для внеклассного чтения
docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/ref
docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/out
stackoverflow.com/questions/1516876/when-to-use-in-vs-ref-vs-out