CodeWars C#Kata绊倒了

CodeWars C#Kata绊倒了,c#,C#,以下代码执行不正确,请尝试找出原因 以下是我的解决方案: public class CustomMath { Int i = 1; public static int multiply(int a, int b) { return a * b; } } 我还在努力,开始考虑操作符重载。仍然捕获失败,所以我想我仍然没有看到它,或者没有理解关于使用操作符重载的一些内容。运算符重载是我唯一的问题还是我的返回语法关闭了 using system; pub

以下代码执行不正确,请尝试找出原因

以下是我的解决方案:

public class CustomMath 
{
    Int i = 1;

    public static int multiply(int a, int b) 
    {
    return a * b;
    }
}
我还在努力,开始考虑操作符重载。仍然捕获失败,所以我想我仍然没有看到它,或者没有理解关于使用操作符重载的一些内容。运算符重载是我唯一的问题还是我的返回语法关闭了

using system;

public class CustomMath
{
    public static int operator *(int a, string b) 
    {
        return a * b;
    }
}

因此,我正在研究二进制运算符,我很确定我的问题是我没有正确地表达int和string。

运算符重载不起作用,因为要重载乘法运算符,至少有一个操作数必须是用户定义的类型

问题是,你根本不需要重载。NET framework中有一些方法专门设计用于从字符串中“提取”一个整数,这是相乘之前应该做的事情。实现这一点有两种简单的方法:
int.Parse
int.TryParse
。只需查看MSDN文档,了解它们是如何工作的,并在特定场景中选择最佳方案

下面是正在运行的
int.Parse

string s = "5";
int i = int.Parse(s);
int j = i + 10 // At this point j = 15

从您得到的错误中,您应该了解函数符号是错误的,您需要将b(字符串)的类型更改为int。因此您的代码是:

public class CustomMath 
{
    public static int multiply(int a, int b) 
    {
        return a * b;
    }
}

你不需要
inti=1
,只要把
stringb
改成
intb
就行了。从技术上讲,我会让
CustomMath
类a
静态类
(因为它是无状态的)我试着把字符串b改成intb,但仍然不起作用。我也会考虑让CustomMath成为一个静态类。静态应该不重要。更改为int的字符串应解决此问题。当你说它“不工作”时,你的确切意思是什么?@silver只有当乘法运算符的至少一个操作数是用户定义的类型时,才可能重载乘法运算符。否则,您必须将重载方法放入.NET类中。感谢jmallinga引入代码战,我很喜欢它!
public class CustomMath 
{
    public static int multiply(int a, int b) 
    {
        return a * b;
    }
}