首页 > 编程语言 >C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析

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

时间:2024-01-24 21:32:38浏览次数:28  
标签:string 示例 C# void int static MyMethod 参数 默认值

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 是一个参数,而 LiamJennyAnja 是实参。

多个参数

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

示例

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 关键字,该关键字表示该方法不应返回任何值。

如果您希望方法返回一个值,可以使用基本数据类型(如 intdouble)而不是 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,关注后即可获取最新文章推送

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

标签:string,示例,C#,void,int,static,MyMethod,参数,默认值
From: https://blog.51cto.com/xiaowange/9402517

相关文章

  • Voxel R-CNN 代码解析
    1.网络主体架构以voxel_rcnn_car.yaml为例。主要包括:VFE(体素编码网络),这里采用下MeanVFE;BACKBONE_3D,这里采用VoxelBackBone8x;MAP_TO_BEV,这里采用HeightCompression,NUM_BEV_FEATURES为256;BACKBONE_2D,这里采用BaseBEVBackbone;DENSE_HEAD,这里采用AnchorHeadSingle;ROI_H......
  • webstorm报错:ESLint: TypeError: this.libOptions.parse is not a function
     解决办法:把 {**/*,*}.{js,ts,jsx,tsx,html,vue}换成{**/*,*}.(js,ts,jsx,tsx,html,vue) 原文:https://stackoverflow.com/questions/73509984/eslint-typeerror-this-liboptions-parse-is-not-a-functionMyfriends,ifyouareusing Webstorm orany Jetbrains p......
  • cprimerplus代码相关汇总
    第一章初识C语言重点内容起源:1972,贝尔实验室。继承B语言。特点:功能强大,应用范围广泛。设计步骤:1.定义程序目标2.设计程序3.编写代码4.编译5.运行程序6.测试和调试程序7.维护和修改程序本章小结C是强大而简洁的编程语言。它之所以流行,在于自身提供大量的实用编程工具,能很好......
  • Atlassian 停服 Bamboo,CI/CD 用不了了?教你快速迁移到极狐GitLab CI
    Atlassian表示,将在2024年2月,终止对于旗下所有服务器端产品(Serverproducts)的支持。随着这个时间节点的逐渐临近。那些依赖于私有化部署了Atlassian服务端产品的用户来说,面临着抉择:要么升级到Atliassian的数据中心或者云产品来继续使用Atliasian的产品,要么寻找替代产品......
  • 高效Mac开发工具大揭秘:提升后端程序员的生产力秘籍
    一、前言作为一名后端开发者,选择正确的工具能显著提高我们的工作效率。在这篇文章中,我将分享我多年使用Mac进行开发所累积的心得,介绍一些我认为对后端程序员特别有帮助的Mac软件和插件。二、软件分类1)提升效率的Mac小工具1.1)ishot截图工具,为什么好用?对我来讲,我喜欢它的地方......
  • C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
    C#Methods方法是一段代码,只有在调用时才会运行。您可以将数据(称为参数)传递给方法。方法用于执行某些操作,也被称为函数。为什么使用方法?为了重用代码:定义一次代码,然后多次使用。创建一个方法方法的定义以方法的名称开头,后跟括号()。C#提供了一些预定义的方法,您已经熟悉,例如......
  • KY207 二叉排序树C++
    考二叉搜索树的插入。#include<iostream>usingnamespacestd;structnode{intdata;structnode*left;structnode*right;};typedefstructnodetree;intmain(){intn;while(cin>>n){tree*root=NULL;while(n!=0......
  • DHCP中继代理配置与管理
    实验介绍:DHCP中继存在目的当一台DHCP需要配置不同网段的IP地址时一:准备工作1.在DHCP服务器配置页面右键ipv4,建立多个作用域。我这里设置了三个可以分配给服务器端的网段,分别是192.168.1.101-192.168.1.200192.168.2.101-192.168.2.200192.168.3.101-192.168.3.2002.......
  • Ybt 金牌导航 6.1.H. 时空旅行 / P5416 [CTSC2016] 时空旅行(线段树分治+凸包)
    题意简述初始有版本\(0\),其中仅包含点\(0\),且\(c_0\)给出,\(x_0=0\)。对于第\(i\)个版本,它依赖第\(fr_i\)个版本,而且会在父级版本的基础上进行以下两种操作之一:插入一个新点,并且会给出\(x_i\)和\(c_i\)。删除一个本就存在的点(不为\(0\))给出\(m\)次询问,每次给出......
  • KY11 二叉树遍历C++
    这个题目思路其实就是先序遍历的变形。相当于沿着先序遍历的顺序跟着构建二叉树就行。然后中序遍历这个树。#include<iostream>#include<string>usingnamespacestd;structtnode{chardata;structtnode*left;structtnode*right;};typedefstructt......