Показано с 1 по 7 из 7

Тема: C# скрипт, передача в метод типа nullable

  1. #1

    По умолчанию C# скрипт, передача в метод типа nullable

    Здравствуйте!

    Скажите пожалуйста, проблема в следующем: имеется переменная Параметр1 (вещественная, для записи - т.е. выход)
    в модуле C# скрипт, в теле класса мною написана функция

    void modeFunc(double? param){
    param=5;
    }

    Затем в execute() вызов : modeFunc(Параметр1);

    При этом значение Параметр1 не устанавливается. В чем тут проблема?
    Последний раз редактировалось Igor V; 08.02.2017 в 13:28.

  2. #2

    По умолчанию

    А почему оно должно устанавливаться? Вы же передаете значение в функцию, а не пишете в выход.
    Приложите лучше целиком весь код скрипта - что вы в нем написали.
    И посмотрите материалы в интернете по работе с методами в C#:
    https://metanit.com/sharp/tutorial/2.8.php
    Спасибо.

  3. #3

    По умолчанию

    using System;
    using MasterSCADA.Script.FB;
    using MasterSCADA.Hlp;
    using FB;
    using FB.FBAttributes;
    using System.Linq;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Diagnostics;
    using System.IO;

    [FBRetain]
    public partial class ФБ : ScriptBase
    {

    public override void Execute()
    {
    modeFunc(ref Параметр1);
    }
    void modeFunc(ref double? param){
    param=5;
    }
    }

  4. #4

    По умолчанию

    Вообще этот код даже не компилируется.
    Что вы вообще хотите сделать?
    Если хотите напрямую писать в выход в методе, то так и пишите:
    public override void Execute()
    {
    modeFunc();
    }
    void modeFunc(){
    Параметр1=5;
    }
    }

    Но делать так конечно не желательно - не ООП получается
    Спасибо.

  5. #5

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Вообще этот код даже не компилируется.
    Что вы вообще хотите сделать?
    Если хотите напрямую писать в выход в методе, то так и пишите:
    public override void Execute()
    {
    modeFunc();
    }
    void modeFunc(){
    Параметр1=5;
    }
    }


    Но делать так конечно не желательно - не ООП получается

    Я бы хотел написать отдельную функцию, в которую в качестве аргумента я бы мог передать выход C# скрипта и вызывать эту функцию через execute(). То, что описали Вы, работает, но в функцию не передается параметр в качестве аргумента, просто внутри функции сразу используется.

  6. #6

    По умолчанию

    Параметр - это свойство, и его по ссылке передавать нельзя. Как вариант можете делать так:
    public partial class ФБ : ScriptBase
    {
    public override void Execute()
    {
    modeFunc("Параметр1");
    }
    void modeFunc(string st)
    {
    var elem = HostFB.OutputGroup.GetPin(st).TreePinHlp;
    elem.AddAssignValueTask(5,null);
    }

    }
    Спасибо.

  7. #7

    По умолчанию

    Спасибо большое

Похожие темы

  1. Скрипт-секундомер
    от a_gricaj в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 22.10.2015, 16:54
  2. Ответов: 26
    Последнее сообщение: 06.02.2015, 12:29
  3. скрипт для МастерСкада
    от yurgin_777 в разделе Помощь Разработчикам
    Ответов: 17
    Последнее сообщение: 06.12.2012, 19:41
  4. Количественный метод отопления
    от Wer в разделе Трёп (Курилка)
    Ответов: 3
    Последнее сообщение: 16.03.2007, 22:44

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •