【问题标题】:What's the point of C# Method Parameters?C# 方法参数的意义何在?
【发布时间】:2020-01-18 03:45:57
【问题描述】:

我是编码新手,我很好奇方法参数为什么有用。当我可以在调用它时应该执行的方法中创建一个变量时,它们有什么意义?给它那个参数有什么意义?

【问题讨论】:

  • 它可以让你向不同的人打招呼,而无需每次都编写新方法。
  • 尝试向 10.000.000 人打招呼 ;-)
  • 可重用性!例如WriteLine 是一个带有参数的方法,它最终会显示在您的屏幕上。想象一下该方法不存在,去尝试创建这样的方法。
  • 在你的情况下它很简单,它只是调用WriteLine 但是如果它正在做一些非常复杂的事情并且你需要多次调用那个复杂的操作,你想把复杂的操作写下来吗?超过?不,当然不是。编写一次复杂的操作,确保它可以工作,然后根据需要多次调用它。

标签: c# windows console-application


【解决方案1】:

参数可以用于几个不同的事情。正如 Phong 在他们的回答中所说,最实际的用途是避免重复。例如,如果我想在控制台打印一行红色文本,我可以这样做:

Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("This is some red text");
Console.ResetColor();

Console.WriteLine("This is some boring white text");

Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("And this is some more red text!");
Console.ResetColor();

或者我可以创建一个带有输入参数的函数,让文本显示为红色,如下所示:

static void WriteRed(string output){
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(output);
    Console.ResetColor();
}

WriteRed("This is some red text");
Console.WriteLine("This is some boring white text");
WriteRed("And this is some more red text!");

如您所见,我们将此任务从 3 行任务转变为 1 行任务,如果没有输入参数,这将是不可能的。如果我们需要在程序的其他任何地方用红色书写,这将非常有用。

显然这是一个非常简单的示例,在更复杂的程序中,这可以轻松为您节省 100 多行代码。

另一个用途是组织。假设您有一个程序接受用户输入并以某种方式对其进行处理。使用带输入参数的函数,您可以将收集的用户输入放在一个 .cs 文件中,而将处理放在另一个文件中。

参数在构造函数中也非常有用,如果您还没有了解的话,它只是在创建对象的新实例时调用的函数。

【讨论】:

  • 好的,所以实际上方法是一种清理和减少代码行的方法。感谢您的帮助!
【解决方案2】:

在您的示例中,假设您想向更多人打招呼,而不仅仅是迈克。 你可以这样做:

SayHi("Mike");
SayHi("Amy");
SayHi("Sam");

让我们更进一步。您可以创建一个名称集合,并向任意数量的人打招呼

List<string> people = new List<string> { "Mike", "Amy", "Sam", "John", "Mindy" };
foreach (string person in people) 
{
    SayHi(person);
}

如您所见,SayHi() 函数是可重用的,因为您可以多次调用它。

再进一步,假设你后来意识到你不想说"Hello " + name,你想说"Hello, " + name + ". How are you?" 那么你只需要在一个地方更改代码,它的所有使用时间都会受到影响。

添加参数是一种说法,即“这段可重用的代码只有在它有这个值可以使用时才有用”。在您的示例代码中,SayHi 需要的值是一个名称,因为它需要知道向谁打招呼。

【讨论】:

  • 感谢您的帮助!我没有完全了解您在其他代码中所说的内容,但我明白了事情的要点哈哈。现在我在想,这听起来类似于您使用数组的方式。我完全不在这里,还是他们相似?感谢您的帮助!
  • @CodingMike 正确。在 .NET 中,用于保存一组相似项的任何类型的数据结构都可以称为集合。数组就是很好的例子,列表也是如此(还有其他)。 foreach 是一种迭代 或遍历集合的内置方式。它基本上会带您按顺序逐个浏览该集合,并让您对该项目执行某些操作。在我的代码中,我正在遍历每个名​​称。每次,在循环内,变量 person 将代表我正在使用的当前名称。
  • 嗯好吧。那么,您是否有理由在方法上使用数组或在数组上使用方法?
  • @CodingMike 您在谈论 2 个不同的概念。数组是一种可以让您存储数据的东西。方法是让你用数据做事的东西。如果你假装我上面的代码是一个数组而不是一个列表string[] names = new string[] { "Mike", "Amy" };。该数组正在存储名称。在您的代码示例中,static void SayHi(string name) 是一种让您使用名称执行操作的方法。
  • 啊,好吧,我想我现在明白了。非常感谢你的帮助。 :)
【解决方案3】:

给它那个参数有什么意义?

它可以帮助您Reuse 一些具有相同步骤的操作。 Don't repeat yourself

如您所见,您只需传递参数,然后在方法内部将帮助您做某事(“Hello” + 传递参数)

【讨论】:

  • 所以你说它很有用,因为我不必多次重复使用相同的代码?对不起,我是个新手,但为什么要多次重用代码?谢谢。 :)
  • 记住Don't repeat yourself。这意味着您应该将具有相同行为的所有操作包装到一个方法中。因此,您可以获得相同格式的输出,而无需任何重复操作。
  • @CodingMike 因为如果以后你想说“嗨”而不是“你好”,你会改变一次而不是多个地方,并且有犯错的风险
【解决方案4】:

C#是面向对象的编程语言


面向对象编程或 OOP 是一种解决问题的方法,其中所有计算都使用对象进行。对象是程序的一个组件,它知道如何执行某些操作以及如何与程序的其他元素进行交互。

创建对象后,您希望它们能够做某事。这就是方法的用武之地。面向对象编程中的方法是与类相关联的过程。方法定义从类创建的对象的行为。另一种说法是,方法是对象能够执行的操作。方法和类之间的关联称为绑定

考虑一个“person”类型的对象的例子,使用创建 人类。与此类关联的方法可以包括 步行和开车。方法有时与 功能,但它们是不同的。函数是一个组合 组合起来以达到某种结果的指令。一个函数 通常需要一些输入(称为参数/参数)和 返回一些结果。例如,考虑驾驶一辆 车。要确定里程,您需要使用 行驶距离和使用的燃料量。你可以写一个 函数来做这个计算。进入函数的参数 将是距离和油耗,结果将是 里程。 任何时候您想确定里程,您只需拨打电话 执行计算的函数

这与方法有何不同?函数是独立的,与类无关。您可以在代码中的任何位置使用此函数,而无需使用对象。

【讨论】:

    【解决方案5】:

    What's the point to them when I can create a variable within the method which should execute when I call on it

    如果你在方法中创建一个变量,你只能在编写代码的时候给它赋值,但是如果你把它作为参数传递,你可以在以后调用方法时动态地赋值你想要的任何值,甚至一个你在写代码的时候不知道的值,这个值可以在运行时赋值。

    另外,方法是用来封装一些逻辑的,比如说你想要一个方法来计算圆的面积是π r2,你知道PI π的值,因为它是一个常数,几乎3.14,但您不知道半径值r,因为它因圆而异,因此您需要将其作为参数传递给方法。

    【讨论】:

      【解决方案6】:

      您应该阅读 OOP(面向对象编程)的基础知识。这将帮助您了解常用的方法重载、覆盖和继承等基本原则。您可以创建结构化的、清晰编写的代码的函数,而不是编写多个单行语句。此外,遵循不同的设计模式,它允许我们赋予函数处理单一职责的能力,并使一切变得更整洁!

      https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/object-oriented-programming

      【讨论】:

      • 好的,我看看这个,谢谢你的建议!
      猜你喜欢
      • 2017-04-03
      • 1970-01-01
      • 2018-07-05
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2011-09-14
      相关资源
      最近更新 更多