#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. Большое вам спасибо!!! Именно то, что я искал 🙂