C#方法Extra
C#方法Extra
上次说的只是方法的一些基本东西,今天讲讲重载和 Lambda 表达式。
重载
方法的重载(overload)指的是同一个名字的方法,有着不一样的方法签名(method signature),函数体里面的内容也可以不一样。方法的签名包括方法的名称和一个参数列表(方法的参数顺序和类型),注意,返回值不是方法的签名。实例构造函数签名由它的每一个形参(从左到右 的顺序)的类型和种类(值、引用或输出参数)组成。
平时用到重载是为了在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。下面看一段代码:
using System;
namespace SomeNotes
{
class Program
{
public static void Main(string[] args)
{
Student stu = new Student();
Console.WriteLine(stu.Add(1, 2));
Console.WriteLine(stu.Add(1.2, 2.3));
stu.Add();
}
}
class Student
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
public void Add()
{
Console.WriteLine("No parameter!");
}
}
}
上面的Student类里面有三个都叫做Add的方法,但是这三个方法的签名都不一样,他们就构成了重载的关系。stu调用Add函数的时候,根据给的参数不一样,调用的Add也不一样。

在写重载的时候,当你打出Add这个方法的时候,Visual Studio会提示你有三个重载。
最后的结果如下图所示:

最后再强调一点:函数的返回值不是函数的签名!
Lambda表达式
Lambda表达式是一个匿名函数,用于节约代码量,提高写程序的效率。
Lambda表达式的语法为:( parameter ) => statement 。参数列表可以有多个参数,也可以没有参数(void),参数的类型可以显式声明,也可以隐式声明,因为编译器能根据上下文推断参数的类型。下面举几个例子:
(x, y) => x * y //多参数,隐式类型=> 表达式
x => x * 5 //单参数, 隐式类型=>表达式
x => { return x * 5; } //单参数,隐式类型=>语句块
(int x) => x * 5 //单参数,显式类型=>表达式
(int x) => { return x * 5; } //单参数,显式类型=>语句块
() => Console.WriteLine() //无参数
这些都是有效的声明。其实Lambda表达式也十分形象,就是把左边括号里面的参数,传到右边的表达式里面,一般都是一个方法。为什么说Lambda表达式是一个匿名函数呢?你可以看看表达式里面有没有出现过方法的名字,它里面只包括了原来方法体里面的一些逻辑,却没有为方法命名,这就体现了匿名方法的好处,省略了声明的步骤,只需要给出逻辑,就能完成这个方法。
Lambda表达式更多情况下用在事件、委托里面,因为还没说到,所以这部分先挖坑了,到时候说委托和事件的时候会给例子出来的。(不是我懒)
C#方法Extra的更多相关文章
- extra过滤
extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 有些 ...
- django-附件上传、media、extra、事务
1 普通上传 1.1 html <form action="/index/" method="post" enctype="multipart/ ...
- Django之extra
extra过滤 extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params= ...
- Django【第19篇】:Django之extra
extra过滤 extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params= ...
- Django之extra过滤
extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 有些 ...
- python框架之django
python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...
- Django基础之安装配置
安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...
- 【Django】--Models 和ORM以及admin配置
Models 数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库 <1>sqlite django默认使用sqlite的数据库 ...
- 循序渐进Python3(十二) --2-- web框架之django简单实现oracle数据库操作
在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接. 产能在软 ...
随机推荐
- 风变编程-Python基础语法
第0关-千寻的名字 目录 1.范例1 2.范例2 1.知识点总结 2.范例 1)单引号和双引号 2)三引号 3)转义字符 1.知识点总结 1)变量 2)变量名 3)变量的命名规范 4)等于与赋值的区别 ...
- 使用PowerShell连接Ubuntu
Ubuntu安装PowerShell Ubuntu安装PowerShell帮助文档 # Download the Microsoft repository GPG keys wget -q https ...
- Mac包管理神器:Home-brew
最近看到一个大神修改的Homebrew国内脚本,安装非常方便,以前使用国外的经常下载不下来,这个感觉是非常快的. Homebrew 国内自动安装脚本 ,修改原脚本中的 clone 操作为“浅拷贝”(- ...
- python3中异常处理方法 try-except-else-finally
个人感觉逻辑上类似if else条件判断 但这是对语法错误以及抛出异常的处理 异常处理 try/except 异常捕捉可以使用 try/except 语句. 以下例子中,让用户输入一个合法的整数,但是 ...
- pyinstaller库的简单使用 打包科赫雪花几何图形
pyinstaller 简单使用 (cmd命令行) pyinstaller -F <文件名.py> Pyinstaller库常用参数 参数 描述 -h 查看帮助 --clean 清理打包过 ...
- 构建docker私有仓库+k8s-pod应用
环境版本系统:centos7.4docker-compose version 1.26.2docker-py version: 4.3.0CPython version: 2.7.5docker-ve ...
- [ASP.NET Core开发实战]基础篇05 服务器
什么是服务器 服务器指ASP.NET Core应用运行在操作系统上的载体,也叫Web服务器. Web服务器实现侦听HTTP请求,并以构建HttpContext的对象发送给ASP.NET Core应用. ...
- 【免费】windows下如何生成tar.gz,一键生成tar.gz
废话 一.实验背景 tar.gz 是Linux和Unix下面比较常用的格式,一条命令就可以把文件压缩打包成tar.gz格式,然而这种格式在windows并不多见. Linxu服务器上,tar.gz 包 ...
- 入门的艰难——关于LR的使用
这年头做一件事真是TM不容易啊.做测试也很纠结,不是都说商业工具很强大么,我去,这个不支持那个不支持的,这还有什么搞头,还非要按照你说的这个版本的才行,高一点的就crash了,结果连最初级的录制脚本都 ...
- 斗篷指令、属性指令、表单指令、条件指令、循环指令、js的Array操作、前台数据库、
```python"""1)指令 属性指令:v-bind 表达指令:v-model 条件指令:v-show v-if 循环指令:v-for 斗篷指令:v-cloak 2) ...