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,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析的更多相关文章
- Ajax详解及使用Ajax时的返回值类型有哪些?
Ajax详解 Ajax = 异步 JavaScript 和 XML. Ajax 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在 ...
- Python内置方法详解
1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名. 可以查看所有的字符串的内置方法,如: 1> count ...
- Python操作SQLite数据库的方法详解
Python操作SQLite数据库的方法详解 本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开 ...
- Java基础之方法详解
方法的所属性 在Java的语言中,方法相当于C语言中的函数,但是它与传统的函数也有着明确的不同:在结构化的语言中,函数是一等公民,整个程序是由一个个函数组成的:但是在面向对象的语言里,类是一等公民,整 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- php调用C代码的方法详解和zend_parse_parameters函数详解
php调用C代码的方法详解 在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用 2 由于php的性能问题,需要用C来实现部分功能 针对第一种情况,最合适的方 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- Java中常见方法详解合集(方法的定义及语法结构)
Java的方法定义 1.方法的定义 方法是控制对象的动作行为方式与准则,在Java中方法位于类体下又有另一种含义. 普通的方法在类中称为"实例方法",因为方法的调用需要创建对象,而 ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- Python调用C/C++动态链接库的方法详解
Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...
随机推荐
- 问题:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
分析 在使用支付宝沙箱时,报了这个错误,该问题是没有安装openssl包 解决 pip3 install pyOpenSSL 安装后再次运行如果还是报错,请降低加密库 pip install cryp ...
- 【Azure 应用服务】更新镜像后并重启应用服务,部署日志始终没有出现加载新镜像成功的日志
问题描述 在App Service中部署镜像文件,发现镜像一直没有部署,重启App Service服务也无效果. DockerFile如下: FROM crunchgeek/php-fpm:7.0 # ...
- 如何在 C# 中以编程的方式将 CSV 转为 Excel XLSX 文件
前言 Microsoft Excel的XLSX格式以及基于文本的CSV(逗号分隔值)格式,是数据交换中常见的文件格式.应用程序通过实现对这些格式的读写支持,可以显著提升性能.在本文中,小编将为大家介绍 ...
- python使用selenium适配谷歌浏览器插件, chromedriver与chrome各版本及下载地址
python selenium使用,需要谷歌chromedriver.exe插件 chromedriver.exe插件是放在python的安装目录下(亲测,其它的都不对) 以下是chromedrive ...
- putty配置kali linux 远程连接
首先配置sshd_config文件 VI 编辑或者使用 gedit 文本编辑, 修改的内容包括下面几个 红色标出(为了以复原建议大家 拷贝一份或者修改的地方进行标注) 之后重启服务,但是有的还是存在报 ...
- 如何避免MYSQL主从延迟带来的读写问题?
在MYSQL 部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取. 但是既然是读写分离,必然会面临这样一个问题,当在主库上进 ...
- Java中关键字-instanceof-的真实应用场景-2022新项目
instanceof关键字主要用来判断两个对象是否为同一种类型,举个例子如果有猫类.动物类,猫类继承自动物类: 判断某个类是否为动物类,就可以使用instanceof关键字.下面简单介绍几种真实的应用 ...
- 使用 PMML 实现模型融合及优化技巧
在机器学习的生产环境中,我们经常需要将多个模型的预测结果进行融合,以便提高预测的准确性.这个过程通常涉及到多个模型子分的简单逻辑回归融合.虽然离线训练时我们可以直接使用sklearn的逻辑回归进行训练 ...
- 13 种在 JavaScript 中删除/过滤数组的方法【转】
英文 | https://javascript.plainenglish.io/13-methods-to-remove-filter-an-item-in-an-array-and-array-of ...
- k8s通过help、dry-run、explain提高编写yaml效率
在Kubernetes(k8s)环境中,help.dry-run和explain命令可以帮助你提高编写YAML文件的效率.这些命令提供了关于资源定义.命令用法和字段说明的信息,从而让你能够更快速.更准 ...