Я хочу использовать этот метод в нестатическом классе:Как я могу использовать статический метод в в нестатической классе
public class LogicalExpressionCalculator : MeasurementInterpreter
{
private static Boolean Operator(this string logic, string x, string y)
{
switch (logic)
{
case "==": return x == y;
case "!=": return x != y;
case ">": return Int32.Parse(x) > Int32.Parse(y);
case ">=": return Int32.Parse(x) >= Int32.Parse(y);
case "<": return Int32.Parse(x) < Int32.Parse(y);
case "<=": return Int32.Parse(x) <= Int32.Parse(y);
case "&&": return bool.Parse(x) && bool.Parse(y);
case "||": return bool.Parse(x) || bool.Parse(y);
default: throw new Exception("invalid logic");
}
}
}
Как я могу изменить этот метод работу в не статиках класс?
Метод я хочу использовать внутри класса в этом методе:
protected void CalculateExpression()
{
Stack variableStack = new Stack();
Stack operatorStack = new Stack();
foreach (string field in contextString)
{
switch (field)
{
case "(":
case "<":
case ">":
case "==":
operatorStack.Push(field);
break;
case ")":
string operatorPop = null;
while (operatorPop == "(")
{
operatorPop = operatorStack.Pop().ToString();
resultStack = Operator(operatorPop, variableStack.Pop().ToString(), variableStack.Pop().ToString());
variableStack.Push(resultStack);
}
break;
case "UserInput":
case "EngineRpm":
case "VehicleSpeed":
variableStack.Push((string)hashtable[field]);
break;
default:
int integer;
if(Int32.TryParse(field, out integer)) variableStack.Push(integer);
if (bool.Parse(field)) variableStack.Push(field);
break;
}
}
Result = resultStack;
if (Result)
{
}
}
я получаю сообщение об ошибке
метод расширения должен быть статическим
Зачем вам этот метод вообще? Он использует только переменные, переданные как аргументы, поэтому он полностью независим от класса, содержащего его. Что мешает вам использовать его «как есть»? –
Статические элементы могут быть доступны из экземпляров. Правила видимости одинаковы (я упоминаю это, потому что ваш образец содержит метод 'private'). Что * точно * вы хотите сделать, и что происходит не так? – Dennis
Я не могу построить проект, потому что n ошибка «Метод расширения должен быть статическим» –