C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析

简介: 方法是一段代码,只有在调用时才会运行。您可以将数据(称为参数)传递给方法。方法用于执行某些操作,也被称为函数。为什么使用方法?为了重用代码:定义一次代码,然后多次使用。

C# Methods

方法是一段代码,只有在调用时才会运行。

您可以将数据(称为参数)传递给方法。

方法用于执行某些操作,也被称为函数。

为什么使用方法?为了重用代码:定义一次代码,然后多次使用。

创建一个方法

方法的定义以方法的名称开头,后跟括号()。C#提供了一些预定义的方法,您已经熟悉,例如 Main(),但您也可以创建自己的方法来执行某些操作:

示例:

class Program
{
   
  static void MyMethod() 
  {
   
    // 要执行的代码
  }
}

示例解释

  • MyMethod() 是方法的名称。
  • static 表示该方法属于 Program 类而不是 Program 类的对象
  • void 表示该方法没有返回值
  • 注意:在 C# 中,以大写字母开头的命名方法是一种良好的实践,因为它使代码更易于阅读。

调用一个方法

要调用(执行)一个方法,请写上方法的名称,后跟两个括号()和一个分号;

在以下示例中,当调用 MyMethod() 时,它用于打印一个文本(操作):

示例
在 Main() 中,调用 MyMethod() 方法:

static void MyMethod() 
{
   
  Console.WriteLine("I just got executed!");
}

static void Main(string[] args)
{
   
  MyMethod();
}

// 输出 "I just got executed!"

一个方法可以被多次调用:

示例

static void MyMethod() 
{
   
  Console.WriteLine("I just got executed!");
}

static void Main(string[] args)
{
   
  MyMethod();
  MyMethod();
  MyMethod();
}

// I just got executed!
// I just got executed!
// I just got executed!

C# Method Parameters

参数和实参

信息可以作为参数传递给方法。参数在方法内部充当变量。

它们在方法名称之后指定,在括号内部。您可以添加任意数量的参数,只需用逗号分隔即可。

以下示例有一个以字符串 fname 为参数的方法。当调用该方法时,我们传递一个名字,该名字在方法内部用于打印全名:

示例:

static void MyMethod(string fname) 
{
   
  Console.WriteLine(fname + " Refsnes");
}

static void Main(string[] args)
{
   
  MyMethod("Liam");
  MyMethod("Jenny");
  MyMethod("Anja");
}

// 输出
// Liam Refsnes
// Jenny Refsnes
// Anja Refsnes

当将参数传递给方法时,它被称为实参。因此,从上面的示例中可以看出:fname 是一个参数,而 Liam、Jenny 和 Anja 是实参。

多个参数

您可以有任意数量的参数,只需用逗号分隔即可:

示例

static void MyMethod(string fname, int age) 
{
   
  Console.WriteLine(fname + " is " + age);
}

static void Main(string[] args)
{
   
  MyMethod("Liam", 5);
  MyMethod("Jenny", 8);
  MyMethod("Anja", 31);
}

// 输出
// Liam is 5
// Jenny is 8
// Anja is 31

C# Default Parameter Value

默认参数值

您还可以使用默认参数值,通过使用等号(=)。

如果我们调用该方法而没有提供实参,则它将使用默认值("Norway"):

示例:

static void MyMethod(string country = "Norway") 
{
   
  Console.WriteLine(country);
}

static void Main(string[] args)
{
   
  MyMethod("Sweden");
  MyMethod("India");
  MyMethod();
  MyMethod("USA");
}

// 输出
// Sweden
// India
// Norway
// USA

带有默认值的参数通常被称为"可选参数"。从上面的示例中,country 是一个可选参数,"Norway" 是默认值。

C# Return Values

返回值

在前一页中,我们在所有示例中使用了 void 关键字,该关键字表示该方法不应返回任何值。

如果您希望方法返回一个值,可以使用基本数据类型(如 int 或 double)而不是 void,并在方法内部使用 return 关键字:

示例:

static int MyMethod(int x) 
{
   
  return 5 + x;
}

static void Main(string[] args)
{
   
  Console.WriteLine(MyMethod(3));
}

// 输出 8 (5 + 3)

此示例返回方法两个参数的和:

示例

static int MyMethod(int x, int y) 
{
   
  return x + y;
}

static void Main(string[] args)
{
   
  Console.WriteLine(MyMethod(5, 3));
}

// 输出 8 (5 + 3)

您还可以将结果存储在变量中(建议使用,因为这样更易于阅读和维护):

示例

static int MyMethod(int x, int y) 
{
   
  return x + y;
}

static void Main(string[] args)
{
   
  int z = MyMethod(5, 3);
  Console.WriteLine(z);
}

// 输出 8 (5 + 3)

C# Named Arguments

也可以使用键:值语法发送参数。

这样,参数的顺序就不重要了:

示例:

static void MyMethod(string child1, string child2, string child3) 
{
   
  Console.WriteLine("The youngest child is: " + child3);
}

static void Main(string[] args)
{
   
  MyMethod(child3: "John", child1: "Liam", child2: "Liam");
}

// 输出 The youngest child is: John

C# Method Overloading

通过方法重载,多个方法可以具有相同的名称但具有不同的参数:

示例:

int MyMethod(int x)
float MyMethod(float x)
double MyMethod(double x, double y)

考虑以下示例,其中有两个添加不同类型数字的方法:

示例

static int PlusMethodInt(int x, int y)
{
   
  return x + y;
}

static double PlusMethodDouble(double x, double y)
{
   
  return x + y;
}

static void Main(string[] args)
{
   
  int myNum1 = PlusMethodInt(8, 5);
  double myNum2 = PlusMethodDouble(4.3, 6.26);
  Console.WriteLine("Int: " + myNum1);
  Console.WriteLine("Double: " + myNum2);
}

与定义两个应该执行相同操作的方法相比,最好重载一个方法。

在下面的示例中,我们对 PlusMethod 方法进行了重载,使其适用于 int 和 double:

示例

static int PlusMethod(int x, int y)
{
   
  return x + y;
}

static double PlusMethod(double x, double y)
{
   
  return x + y;
}

static void Main(string[] args)
{
   
  int myNum1 = PlusMethod(8, 5);
  double myNum2 = PlusMethod(4.3, 6.26);
  Console.WriteLine("Int: " + myNum1);
  Console.WriteLine("Double: " + myNum2);
}

注意:只要参数的数量和/或类型不同,多个方法可以具有相同的名称。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
437 73
|
自动驾驶 5G 网络架构
|
网络协议 安全 区块链
DNS+:互联网的下一个十年,为什么域名系统正在重新定义数字生态? ——解读《“DNS+”发展白皮书(2023)》
DNS+标志着域名系统从基础寻址工具向融合技术、业态与治理的数字生态中枢转变。通过与IPv6、AI和区块链结合,DNS实现了智能调度、加密传输等新功能,支持工业互联网、Web3及万物互联场景。当前,中国IPv6用户达7.6亿,全球DNSSEC支持率三年增长80%,展现了其快速发展态势。然而,DNS+仍面临安全威胁、技术普惠瓶颈及生态协同挑战。未来,需推动零信任DNS模型、加强威胁情报共享,并加速标准制定,以筑牢数字时代网络根基,实现更安全、高效的数字生态建设。
1003 4
|
供应链 项目管理 容器
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
在当今快速变化的商业环境中,对象管理组织(OMG)推出了三种强大的建模标准:BPMN(业务流程模型和符号)、CMMN(案例管理模型和符号)和DMN(决策模型和符号)。它们分别适用于结构化流程管理、动态案例处理和规则驱动的决策制定,并能相互协作,覆盖更广泛的业务场景。BPMN通过直观符号绘制固定流程;CMMN灵活管理不确定的案例;DMN以表格形式定义清晰的决策规则。三者结合可优化企业效率与灵活性。 [阅读更多](https://example.com/blog)
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
345 20
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
1638 12
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
1489 14
|
JSON 自然语言处理 Java
OpenAI API深度解析:参数、Token、计费与多种调用方式
随着人工智能技术的飞速发展,OpenAI API已成为许多开发者和企业的得力助手。本文将深入探讨OpenAI API的参数、Token、计费方式,以及如何通过Rest API(以Postman为例)、Java API调用、工具调用等方式实现与OpenAI的交互,并特别关注调用具有视觉功能的GPT-4o使用本地图片的功能。此外,本文还将介绍JSON模式、可重现输出的seed机制、使用代码统计Token数量、开发控制台循环聊天,以及基于最大Token数量的消息列表限制和会话长度管理的控制台循环聊天。
5034 7
|
存储 前端开发 JavaScript
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
本文介绍了JavaScript中作用域的概念,包括全局变量和局部变量的区别,预解析机制(变量提升),以及函数返回值的使用和类型。通过具体示例讲解了变量的作用域、函数的返回值、以及如何通过return关键字从函数中返回数据。
354 1
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值

推荐镜像

更多
  • DNS