从基数 class 属性 获取字符数组
Get array of chars from a base class property
我对编程比较陌生,这是我想做的事情:
我有一个包含 属性 "Operator" 的基数 class,它的导数是 classes 用于数学运算,所以运算符是 '-' '+' 等。现在我需要创建这些运算符的数组以在我的计算器引擎中使用。我只有一个操作方法列表,如何只提取操作符并将它们放入数组中?这是我已经拥有的,但我被要求使用已经存在的 Operators
char[] operatorArray = {'+', '-', '/', '*'};
int indexOfLastOperatorBeforeSquare = leftOfSquare.LastIndexOfAny(operatorArray);
这是我的基础 Class 包含运算符 属性:
public abstract class OperationBase
{
public abstract string Operator { get; set; }
public abstract string Execute(string leftOperator, string rightOperator);
}
以加法Class的构造函数为例:
public Addition()
{
Operator = "+";
}
可能您在 类 中导出了 OperationBase
,例如 Addition
、Substraction
、Division
...
如果将这些实现存储在 List<OperationBase>
中(即向整个列表添加实例:list.Add(new Addition()); list.Add(new Subtraction());
等等),则可以使用 LINQ 提取运算符:
List<OperationBase> operations = new List<OperationBase>();
operations.Add(new Addition());
operations.Add(new Division());
operations.Add(new Subtraction());
IEnumerable<char> operators = operations.Select(operation => operation.Operator[0]);
现在,整个 operators
可以转换为数组调用 operators.ToArray()
,它将包含运算符作为字符:
char[] operatorChars = operators.ToArray();
请注意,我必须使用 operation.Operator[0]
获取运算符字符:您的 OperationBase
定义操作将其运算符提供为 string
而不是 char
。如果要避免这种情况,将整个属性固定,转为char
类型,代码如下:
IEnumerable<char> operators = operations.Select(operation => operation.Operator);
我对编程比较陌生,这是我想做的事情: 我有一个包含 属性 "Operator" 的基数 class,它的导数是 classes 用于数学运算,所以运算符是 '-' '+' 等。现在我需要创建这些运算符的数组以在我的计算器引擎中使用。我只有一个操作方法列表,如何只提取操作符并将它们放入数组中?这是我已经拥有的,但我被要求使用已经存在的 Operators
char[] operatorArray = {'+', '-', '/', '*'};
int indexOfLastOperatorBeforeSquare = leftOfSquare.LastIndexOfAny(operatorArray);
这是我的基础 Class 包含运算符 属性:
public abstract class OperationBase
{
public abstract string Operator { get; set; }
public abstract string Execute(string leftOperator, string rightOperator);
}
以加法Class的构造函数为例:
public Addition()
{
Operator = "+";
}
可能您在 类 中导出了 OperationBase
,例如 Addition
、Substraction
、Division
...
如果将这些实现存储在 List<OperationBase>
中(即向整个列表添加实例:list.Add(new Addition()); list.Add(new Subtraction());
等等),则可以使用 LINQ 提取运算符:
List<OperationBase> operations = new List<OperationBase>();
operations.Add(new Addition());
operations.Add(new Division());
operations.Add(new Subtraction());
IEnumerable<char> operators = operations.Select(operation => operation.Operator[0]);
现在,整个 operators
可以转换为数组调用 operators.ToArray()
,它将包含运算符作为字符:
char[] operatorChars = operators.ToArray();
请注意,我必须使用 operation.Operator[0]
获取运算符字符:您的 OperationBase
定义操作将其运算符提供为 string
而不是 char
。如果要避免这种情况,将整个属性固定,转为char
类型,代码如下:
IEnumerable<char> operators = operations.Select(operation => operation.Operator);