Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C计算#_C# - Fatal编程技术网

C# 用C计算#

C# 用C计算#,c#,C#,大家好,我正试图让大家知道我做错了什么,或者也许我又想得太多了。我试图创建一个类,在这个类中我调用了两个私有变量,比如num1和num2。然后我创建一个公共属性,它对应于num 1和num2。然后,在我创建之后,我需要创建一个名为calculate的公共可过度分配方法,这将两个变量相加并返回结果。然后我有一个添加按钮,我必须将代码添加到添加两个数字的按钮,并将结果输出到messagebox。我尝试了几种不同的方法,但仍然没有得到它。 以下是代码1: public abstract class

大家好,我正试图让大家知道我做错了什么,或者也许我又想得太多了。我试图创建一个类,在这个类中我调用了两个私有变量,比如num1和num2。然后我创建一个公共属性,它对应于num 1和num2。然后,在我创建之后,我需要创建一个名为calculate的公共可过度分配方法,这将两个变量相加并返回结果。然后我有一个添加按钮,我必须将代码添加到添加两个数字的按钮,并将结果输出到messagebox。我尝试了几种不同的方法,但仍然没有得到它。 以下是代码1:

 public abstract class CalulateValues
{
    protected List<int> values = new List<int>();
    public void AddValue(int value) { values.Add(value); }
    public abstract int Calculate();

}

public class Add : CalulateValues
{
    public override int Calculate()
    {
        return values.Sum(x => x);
    }
}
现在,当按钮出现时,我尝试了以下代码:

public partial class Form2 : Form
{
    public Form2()
    {
        CalculateValues myAdd = new CalculateValues();
        MulitplyValues Add = new MulitplyValues();
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int total = myAdd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
        MessageBox.Show(total.ToString());

    }

我不太确定我做错了什么,也许我没有以正确的方式设计代码

您已将
myAdd
声明为Form2构造函数中的局部变量。将其声明为全局变量,以便能够从
按钮1\u Click()


除此之外,您是否收到任何错误或异常?其次,您在哪里声明了接受两个参数的Add方法?

您需要在构造函数外部声明
myAdd
变量,即使您只在Form2()构造函数中初始化

您的
CalculateValues
类没有“
Add
”方法。 相反,您应该像下面这样调用“
Calculate
”方法:

public partial class Form2 : Form
{
    public Form2()
    {
        CalculateValues myAdd = new CalculateValues();
        MulitplyValues Add = new MulitplyValues();
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int total = myAdd.Calculate(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
        MessageBox.Show(total.ToString());

    }
然后首先查阅C#教程,然后详细了解变量范围

int total = myAdd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
myAdd根本没有Add方法。它是
AddValue
。您应该调用
计算
并检索结果

在构造函数中将myAdd声明为成员变量,而不是局部变量

试试看:

myAdd.AddValue(int.Parse(textBox1.Text)
myAdd.AddValue(int.Parse(textBox2.Text);    
int total = myAdd.Calculate();
MessageBox.Show(total.ToString());

您的代码中有多个bug。

您没有方法Add,您应该使用如下方法计算

private void button1_Click(object sender, EventArgs e)
{
    int total = myAdd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
    MessageBox.Show(total.ToString());
}

首先,我建议修改你的名字。有一个名为
CalulateValues
的类和另一个名为
CalculateValues
的类非常令人困惑,还有一个名为
Add
的变量,它是
MulitplyValues
的一个实例。在我看来,您并没有在任何地方调用Calculate()/线程。。。。链接到可能我只是让自己更加困惑,然后我需要。现在private可以是这样的,对的,private int num1;私人国际货币单位2;'要创建公共属性,您可以像下面这样“public int Add()”;num1=num1;num2=num2;返回num1+num2;'或者我只是把它弄糊涂了。你真的应该读一本C#书或者至少是C#教程,其中也解释了OOP的概念。我想你的意思是把它作为Form2的一个字段添加,而不是一个全局变量。@DavidKemp它在Form2类的上下文中是全局的,但是是的,它应该在Form2中声明为字段,以便Form2类的其他方法和属性可以访问。(我相信我们在同一条轨道上:-)全局上下文有一个特殊的含义,在C#中无效,因为你不能有全局变量-你必须使用(公共)静态成员。但是是的,我们都在同一条轨道上。
myAdd.AddValue(int.Parse(textBox1.Text)
myAdd.AddValue(int.Parse(textBox2.Text);    
int total = myAdd.Calculate();
MessageBox.Show(total.ToString());
private void button1_Click(object sender, EventArgs e)
{
    int total = myAdd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
    MessageBox.Show(total.ToString());
}