【问题标题】:Working with methods and return values in classes在类中使用方法和返回值
【发布时间】:2020-09-15 12:04:47
【问题描述】:

也许这是一个非常愚蠢的问题,但我与 VS 合作已经很长时间了。

我试图弄清楚如何从程序内部调用方法/函数,例如按一个按钮。但是方法写在Class1.cs。我在下面展示了我正在尝试的内容,但我知道这是完全错误的:

namespace TestProject1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AddingNumbers(3, 5);
            label1.Text = Result;
        }
    }
}

Class1.cs 我有这样的东西:

namespace TestProject1
{
    class Class1
    {
        public static AddingNumbers(int num1, int num2)
        {
            return num1 + num2;
        }
    }
}

如果有人能帮助我理解这一点,我将不胜感激。我不需要完整的答案,因为那样我什么都学不到。

我认为它与 Public、Static、Void 或类似的东西有关。我试图通过阅读 MSDN 来了解这个原理是如何工作的,但我现在不明白。

建议不胜感激

【问题讨论】:

  • 你的AddingNumbers 应该看起来像public static int AddingNumbers(int num1, int num2)(注意返回类型int)然后在你的按钮点击函数中:label1.Text = Class1.AddingNumbers(3, 5);
  • 按照 Rafalon 的建议调整其返回类型后,您可以像这样调用AddingNumbers()Class1.AddingNumbers(3, 5)。这是有效的,因为您将其声明为 static,这意味着您不必为类 Class1 实例化对象来访问该方法。

标签: c# .net visual-studio


【解决方案1】:

我认为您错过了AddingNumbers方法的返回类型,如下所示

public static int AddingNumbers(int num1, int num2)
{
        return num1 + num2;
}

在 Form1 类中,您可以通过它的类名调用AddingNumbers(静态方法),如下所示

 private void button1_Click(object sender, EventArgs e)
    {
       var Result = Class1.AddingNumbers(3, 5);
        //As per your requirement you need to show it in label that's 
        //why used  ToString() method to convert from int to string
        label1.Text = Result.ToString();
    }


 

【讨论】:

    【解决方案2】:

    访问类中的静态方法仍然需要调用完整的命名空间。因此,您应该使用Class1.AddingNumbers(3, 5); 调用它

    你的静态方法需要一个返回类型int

    【讨论】:

    • 这个原理总是一样的吗?因此,如果我调用一个类ClassCalculations.cs 我会写ClassCalculations.AddingNumbers(3, 5); 而不是在括号之间放置两个数字,我可以使用变量,只要我使用正确的类型?
    • 等等,那是完全不同的事情。 .cs 文件与 class 无关。 .cs 文件如果用于项目分类如文件夹。您可以拥有一个名为 client.cs 的文件,并在该单个文件中拥有 200 个 class。如果您创建一个名为ClassCalculations.cs 的类文件,它还会在该文件中创建一个名为ClassCalculation 的类。但是对于关于原则的问题,是的,它总是一样的。在您的情况下,Class1 恰好位于同一命名空间TestProject1 中。如果不是这样,您会使用完整的命名空间和类来调用。
    • 我在哪里可以找到更多关于这个的好信息?我试图掌握这个主题,但找不到我需要的信息。显然人们不喜欢我的问题,因为我可以在其他地方找到信息。
    • here 是一个答案,显示了 2 个不同命名空间调用的一个非常基本的示例。那和静态是两个不同的东西
    猜你喜欢
    • 2013-04-24
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2016-01-28
    • 2016-08-25
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多