如何创建一个输出整数的void方法,并让该方法将传递给它的数据除以2



我在这方面真的是个新手,还在学习C#。我很难为我正在做的任务寻找一个好的例子

所以你可以确切地看到我被问到了什么,这是我作业的逐字文本:

执行这些操作并创建一个控制台应用程序,其中包括以下内容:

  1. 创建一个类。在该类中,创建一个输出整数的void方法。让该方法将传递给它的数据除以2
  2. 在Main()方法中,实例化该类
  3. 让用户输入一个数字。调用该数字上的方法。在屏幕上显示输出。它应该是输入的数字,除以2
  4. 创建一个带有输出参数的方法
  5. 重载方法
  6. 将类声明为静态的

到目前为止,我创建了一个类。在Main()方法中,实例化该类。如果答案在这里,我提前道歉。如果是的话,给我指个方向。谢谢。

在我的main()程序中:

class Program
{
static void Main(string[] args)
{
MathMethod mathMethod = new MathMethod(); //Instantiate
}
}

我的数学方法.cs:

class MathMethod
{
public void Operator()
{
int num1 = 6;
int num2 = 9;
}
public void Output(int number1, int number2)
{
int value = 
}

我不会做你的作业,但我很乐意为你提供指针,让你为你的作业组装成一个解决方案

作业文本包含一些令人困惑的措辞。我会说";调用该数字上的方法";应读作";调用该方法,传递该数字"-调用一个方法";关于";是不同的,在某种程度上意味着你应该编写一个扩展方法(我不太相信这是这个级别的任务的要求)

它也会问你一些我不确定我会问一个新的学习者的问题,但嘿,我们现在是

在大多数情况下,我想说,你在这里的特殊问题已经由彼得回答了;他们的回答增加了,而不是你的要求,但我相信你能解决这个问题。此外,他们的答案将两个操作数都带到运算中,但你的赋值要求你创建一个只带一个数字的方法,并将其减半,这样你的方法就不会像Piotr那样有3个参数,它将有2个

在Main()方法中,实例化该类。

这是完成的

让用户输入一个数字。

使用Console.WriteLine提示用户做某事,然后使用Console.ReadLine将他们键入的内容读取到字符串变量中

您还需要将字符串转换为int;看看int.Parse,它很容易使用。

您可以稍后考虑升级到int.TryParse,这是一个更健壮的选项,如果用户输入不能解释为数字的垃圾,它不会崩溃。有趣的是,TryParse的工作方式与您的作业要求相同;它使用out参数使解析后的数字可用。它之所以使用out,是因为它还返回一个指示成功与否的布尔值,这样您就可以相应地采取行动;对于out来说,这是一个比您的任务要求您考虑的更有效的用例,因为TryParse确实需要返回两件事(是否成功的布尔值和如果成功则解析的值)。你的要求更人为,为了学术观点而使用out;请不要忘记out是一个经常使用的好东西。它(以及它的兄弟ref)是可怕的东西,我们尽可能减少使用。

一旦这项任务结束,努力避免再次使用out,直到你完全意识到其中的含义;一旦新手开始思考";这就是我如何从一个方法"返回多个东西;他们开始到处放CCD_ 11。不";一个方法只能返回一个东西";完全可以使用,只需使一个方法可以返回的一个对象包含您想要返回的多个东西,然后返回该对象中的一个。这毕竟是Object Orered编程!

我很少使用out,我不记得在过去10年的编码中有过一个特定的用例,除了在so上学术上设计的例子,我也恳求人们不要使用它

调用该数字上的方法。

它意味着调用方法,将解析的数字作为参数传递

在屏幕上显示输出。

Piotr公司展示了这种

创建一个带有输出参数的方法。

这似乎是关于如何实现步骤2的提示;当你到达时,你已经完成了

重载一个方法。

Overloading在同一类中提供两个或多个名称相同的方法。编译器根据在参数中发现的一些差异来选择使用哪一个

这是一组过载的例子:

void Halve(int number, out int result)
void Halve(int number, int howManyTimes, out int result)
void Halve(double number, out double result)

重载可以因参数的数量、参数的类型或两者而不同。顺便说一句,上面的前两个是我可能会为你的任务推荐的;提供一种只除以2一次的方法Halve,然后提供另一种方法,该方法需要一个额外的数字,即进行除法的次数。

对于额外的样式点,您可以让只划分一次的Halve调用划分N次的方法,为N个参数传递1

将类声明为静态。

哦,我真希望教育工作者不要提倡静态。这真是太痛苦了,因为它破坏了我们正在做的所有好的工作,我们试图让你从同一类型对象的多个实例来思考。这也让我想知道更多关于前面提到的扩展方法

我会";"旁路";这是通过将持有Main方法的Program类设置为static

如果您需要从方法返回值,您可以:

  1. 使用退货种类(在您的任务中禁止使用)
  2. 使用ref/out参数(例如,这允许在不使用元组的情况下返回多个值)

示例(未经测试编写!):

// out - means that parameter will be passed out of method
public void Output(int number1, int number2, out int result)
{
result = number1 + number2;
}
public void AddNumbers()
{
int ret; // Need to define variable to hold the result
Output(2, 5, out ret); // Actual call. Note the out keyword
Console.WriteLine("2 + 5 = " + ret);
}

最新更新