как получить результат функции в качестве входных данных другой

#c# #function #winforms #data-binding

Вопрос:

У меня есть базовый пользовательский интерфейс, в котором пользователь должен иметь возможность выбрать геометрию с помощью одной кнопки и начать оценку геометрии с помощью другой кнопки. Но я получаю ошибку: имя «brep» не существует в текущем контексте

 private void btnSelectBuilding_Click_1(object sender, EventArgs e)
{
     MyFunctions.SelectBuildingGeometry(out Rhino.Geometry.Brep brep);
}
 
 private void btnCalculate_Click(object sender, EventArgs e)
{
     MyFunctions.EvaluateGeometry(brep);
}
 

Функция 1:

 public static Brep SelectBuildingGeometry(out Brep brep)
{
     ... select the geometry ...    
     return brep;
}
 

Функция 2:

 public static void EvaluateGeometry(Brep brep)
{
     ... do some evaluation 
}
 

Комментарии:

1. Есть ли причина, по которой ваш Brep SelectBuildingGeometry(out Brep brep) метод имеет возвращаемый тип Brep , а также параметр out того же типа? Для чего это? В любом случае, MyFunctions.SelectBuildingGeometry(out Rhino.Geometry.Brep brep); установите out значение в brep локальную переменную, которая, как представляется, нигде не хранится, поэтому MyFunctions.EvaluateGeometry(brep); не найдет brep ссылку, которую вы пытаетесь передать. — Вы игнорируете возвращаемое значение этих методов. Это то же самое out , что и вещь?

2. Большое вам спасибо за ваш ответ! Нет, конкретной причины нет, может out быть, это плохо в этом контексте. Можете ли вы сказать мне, как решить эту проблему; чтобы MyFunctions.EvaluateGeometry(brep); найти ссылку, которую я хочу передать?

3. Либо используя out значение (если это действительно требуется), либо значение, возвращаемое методом, сохраните его в поле или выделенном объекте класса, который обрабатывает текущий Geometry.Brep выбор. Например, упрощенно: private Rhino.Geometry.Brep brep = null; . В селекторе Щелкните обработчик: brep = MyFunctions.SelectBuildingGeometry(); . В вычислении щелкните обработчик: if (brep != null) { MyFunctions.EvaluateGeometry(brep); } .

4. Большое вам спасибо!!! Именно то, что я искал 🙂