Выполнить расчет на основе оператора, переданного в качестве параметра метода ⇐ C#
-
Anonymous
Выполнить расчет на основе оператора, переданного в качестве параметра метода
Я пытаюсь выполнять арифметические операции на основе операторов, переданных в качестве параметра метода. Я могу сделать это разными способами, но проблема в том, что у меня есть таблица данных, с которой нужно работать. Я не могу передать определенную строку данных, так как у меня много строк данных, с которыми нужно работать.
Что я сделал: Я знаю, что это можно сделать в стиле делегата. что-то вроде ответа - https://stackoverflow.com/a/44333156
public int MainOperationSimplifeid(Func оператору) { если (перед операцией == 2) { a2 = Convert.ToInt32(textBox1.Text); textBox1.Текст = ""; результат = оператору(а1, а2); // textBox1.Text = Convert.ToString(result); а1 = 0; а2 = 0; } перед операцией++; вернуть результат; } Я знаю, я также могу добиться этого, используя перечисление или переключатель или даже перегрузку метода. Но мой код уже огромен и сложен с множеством методов поддержки. Поэтому я не хочу усложнять ситуацию.
Что мне нужно: Могу ли я сделать что-то вроде этого?
void MethodName (DataTable dt, int операнд, char op) { //несколько строк кода dt.SomeRowName1 = (double)dtRowValue операнда; //несколько строк кода dt.SomeRowName2 = (double)dtRowValue операнда; dt.SomeRowName3 = (double)dtRowValue операнда; //несколько строк кода } Я хочу добиться этого очень общим способом (повторное использование кода), а не перегружать методы или переключаться на разные операторы и писать одни и те же строки кода снова и снова.
Буду очень признателен, если кто-нибудь сможет мне в этом помочь. Заранее спасибо.
Я пытаюсь выполнять арифметические операции на основе операторов, переданных в качестве параметра метода. Я могу сделать это разными способами, но проблема в том, что у меня есть таблица данных, с которой нужно работать. Я не могу передать определенную строку данных, так как у меня много строк данных, с которыми нужно работать.
Что я сделал: Я знаю, что это можно сделать в стиле делегата. что-то вроде ответа - https://stackoverflow.com/a/44333156
public int MainOperationSimplifeid(Func оператору) { если (перед операцией == 2) { a2 = Convert.ToInt32(textBox1.Text); textBox1.Текст = ""; результат = оператору(а1, а2); // textBox1.Text = Convert.ToString(result); а1 = 0; а2 = 0; } перед операцией++; вернуть результат; } Я знаю, я также могу добиться этого, используя перечисление или переключатель или даже перегрузку метода. Но мой код уже огромен и сложен с множеством методов поддержки. Поэтому я не хочу усложнять ситуацию.
Что мне нужно: Могу ли я сделать что-то вроде этого?
void MethodName (DataTable dt, int операнд, char op) { //несколько строк кода dt.SomeRowName1 = (double)dtRowValue операнда; //несколько строк кода dt.SomeRowName2 = (double)dtRowValue операнда; dt.SomeRowName3 = (double)dtRowValue операнда; //несколько строк кода } Я хочу добиться этого очень общим способом (повторное использование кода), а не перегружать методы или переключаться на разные операторы и писать одни и те же строки кода снова и снова.
Буду очень признателен, если кто-нибудь сможет мне в этом помочь. Заранее спасибо.
Мобильная версия