【问题标题】:How to give a math operator as a parameter in C#? [duplicate]如何在 C# 中将数学运算符作为参数? [复制]
【发布时间】:2019-07-01 09:18:13
【问题描述】:

我开始编写代码并尝试制作一个非常基本的计算器。我想通过用两个数字调用它来在 cmd 中运行它。所以,在正确的目录中,我会输入“BasicCal 2 + 5”来运行它。

这是C#中的代码

using System;

public class BasicCal
{
    public static void Main(string [] args)
    {   
        Console.Write(args[0] + args[1] + args[2]);
        Console.ReadKey();
    }
}

Cmd 然后只打印“2+5”,所以我猜 C# 不会将运算符视为参数。

所以我只需要知道如何让 C# 在将运算符作为参数给出时识别它。提前致谢。

【问题讨论】:

  • 您需要相应地分析字符串和分支(if)。您可能还需要将其他参数解析为正确的类型。
  • C# 并不是没有运算符。您正在传递没有特殊含义的 strings 并将它们连接起来。计算机猜不出你想让中间的字符串以一种特殊的方式起作用
  • 在这个答案stackoverflow.com/questions/53844/… 中有一些关于如何动态执行表达式的好建议
  • “C# 没有将运算符视为参数”更多的是 C# 无法指示您是为数字使用运算符还是仅在字符串中使用加号。
  • @Markus Deibel 我使用if (args[1] == "+") 管理它,等等,它起作用了。谢谢!

标签: c# parameters calculator operator-keyword


【解决方案1】:

这里有几个问题。

A) 没有一种内置方式可以让 C# 编译器理解您在此执行的操作,因此您必须实现使用符号解析字符串参数的逻辑:

switch(args[1])
{
   case "+": 
   {
      ... 
      break;
   }
   case "-": 
   {
      ... 
      break;
   }
   ... etc
}

B) Args 只是字符串,所以如果我们只是做类似args[0] + args[1] 的事情,C# 编译器不知道它在处理数字,并为string 运行一个重载的+ 运算符,该运算符执行字符串连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多