C#类型成员:方法
一、方法
方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成。
void Method1() { } //无返回值、无参数的方法
void Method2(int i) { } //无返回值、有一个参数的方法
int Method3(bool b, string s) { } //返回值为int、有二个参数的方法
class class1 { } //定义一个类作为参数或者返回值
class1 Method4(float f, class1 c) { } //返回值为class、有二个参数的方法
方法又称为函数,它既可以作为一个独立的功能,又可以作为类的行为。
作为独立功能:洗衣机
/// <summary>
/// 洗衣机的功能
/// </summary>
/// <param name="clothing">投放衣物</param>
/// <param name="detergent">投放洗涤剂(单位:克)</param>
/// <param name="wash">选择洗漂(true或false)</param>
/// <param name="dehydration">选择脱水(true或false)</param>
/// <param name="duration">设定时长(单位:分钟)</param>
/// <returns>返回结果</returns>
public string WashingMachine(string clothing, int detergent, bool wash, bool dehydration, int duration)
{
if (clothing == null)
{
return "请放入衣物";
}
if (duration < )
{
return "洗衣时长不能小于5分钟";
}
else
{
float washTime; //洗漂时长
float dehydrationTime; //脱水时长
if (wash)
{
washTime = dehydration ? duration * / : duration;
if (detergent <= )
{
return "洗漂需要投放洗涤剂";
}
else
{
//开始洗漂衣物
}
}
if (dehydration)
{
dehydrationTime = wash ? duration - washTime : duration;
//开始脱水衣物
}
return "完成";
}
}
作为类的行为:洗衣机
/// <summary>
/// 洗衣机的类
/// </summary>
public class WashingMachine
{
#region 字段
/// <summary>
/// 时长(单位:分钟)
/// </summary>
public int duration;
#endregion #region 方法
/// <summary>
/// 投放
/// </summary>
/// <param name="clothing">衣物</param>
/// <param name="detergent">洗涤剂(单位:克)</param>
public void ThrowIn(string clothing, int detergent) { } /// <summary>
/// 洗脱功能
/// </summary>
public void All() { } /// <summary>
/// 洗漂功能
/// </summary>
public void Wash() { } /// <summary>
/// 脱水功能
/// </summary>
public void dehydration() { } /// <summary>
/// 设定时长
/// </summary>
/// <param name="duration">时长(单位:分钟)</param>
public void SettingTime(int duration) { } /// <summary>
/// 开启洗衣机
/// </summary>
public void Open() { } /// <summary>
/// 关闭洗衣机
/// </summary>
public void Close() { }
#endregion
}
方法作为独立功能对比作为类的行为优点是代码少、运行快,缺点则是维护性和扩展性差;
方法作为类的行为对比作为独立功能缺点是代码多、运行慢,优点则是维护性和扩展性好。
C#中有一种功能特殊的方法:构造函数。
二、方法的重载
当多个方法所做的事相同,但是参数的个数和参数的类型不同时,会出现同一件事方法名不同,这样既不利于记忆也不利于维护,所以C#支持方法名相同,但是参数个数或者参数类型不同的方法,这种方法叫方法的重载(参数个数相同,类型不同时,参数顺序不同也是重载)。
比如洗衣机的投放方法,当我只想脱水的时候,我只想传入一个参数衣物;有时我需要衣物按件来放,而不是传入衣物。
public class WashingMachine
{
/// <summary>
/// 投放
/// </summary>
/// <param name="clothes">衣物件数</param>
public void ThrowIn(int clothes) { } /// <summary>
/// 投放
/// </summary>
/// <param name="clothing">衣物</param>
public void ThrowIn(string clothing) { } /// <summary>
/// 投放
/// </summary>
/// <param name="clothes">衣物件数</param>
/// <param name="detergent">洗涤剂(单位:克)</param>
public void ThrowIn(int clothes, int detergent) { } /// <summary>
/// 投放
/// </summary>
/// <param name="clothing">衣物</param>
/// <param name="detergent">洗涤剂(单位:克)</param>
public void ThrowIn(string clothing, int detergent) { } /// <summary>
/// 投放(参数个数相同,类型不同时,参数顺序不同)
/// </summary>
/// <param name="clothing">衣物</param>
/// <param name="detergent">洗涤剂(单位:克)</param>
public void ThrowIn(int detergent, string clothing) { }
}
关联:方法的重载与方法的重写的对比(见C#多态)
后期补充。
C#类型成员:方法的更多相关文章
- 【.net 深呼吸】细说CodeDom(5):类型成员
前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...
- NET设计规范二:类型成员设计
http://www.cnblogs.com/yangcaogui/archive/2012/04/20/2459567.html 接着 → .NET设计规范一:设计规范基础 上一篇,我们来了解下类型 ...
- C++ static、const和static const类型成员变量声明以及初始化
C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. sta ...
- F2工作流引擎参与者类型成员的交、并、互拆计算规则
计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行. 计算算法:并集(权重最低),交集(权重中) ...
- 【翻译自nikic大神】PHP中原生类型的方法
引言 第一次,翻译别人的文章,用四级英语的水平来翻译~~囧,可能有很多不太恰当的地方,尽管拍砖(有些地方实在想不到恰当的翻译,我同时贴出了原文和自己很low的翻译). 翻译这篇文章用了我3个晚上一个中 ...
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...
- C#原始类型扩展方法—this参数修饰符
扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual ...
- C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器
前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...
- javascript 关于Date 时间类型 处理方法
上一篇博客中和大家分享了关于 字符串转时间类型 这一篇顺便整理下 javascript 中 Date 类型的一些方法 var time = new Date(); var year=time.getY ...
- 关于通过JS识别浏览器类型的方法
JS检测浏览器类型的方法 网络上一般采用navigator.userAgent判断浏览器标识的办法,但是有个麻烦的问题是IE11不断升级之后,IE11的userAgent变成: "Moz ...
随机推荐
- 【Beta】Scrum Meeting 9 & 助教参会记录
目录 前言 任务分配 燃尽图 会议照片 签入记录 上周助教交流总结 Q:项目进度如何? Q:有关commit与issue关联的问题? Q:人员变动后分工的变化情况? Q:接下来还有什么新功能? Q:大 ...
- 《Maven实战》整理
一.maven介绍 Maven是优秀的构建工具,能够帮我们自动化构建过程,从清理.编译.测试到生成报告,再到打包和部署. Maven能帮助我们标准化构建过程.在Maven之前,十个项目可能有十种构建方 ...
- oc界面开发整理
oc界面开发整理 ViewController.h from test82 #import <UIKit/UIKit.h> @interface ViewController : UIVi ...
- Composer教程
介绍 PHP程序的包管理器 负责, 配置需要的项目, 项目需要的项目. 解决, 项目的依赖问题. 当前的PHP项目, 当作一个软件包去看待. 思路: 将软件集中在统一的软件源中. 安装 ...
- Oracle 11g R2手动配置EM(转)
转自:http://blog.itpub.net/9034054/viewspace-1973418/ Oracle 11g R2手动配置EM Oracle 作者:luashin 时间:2016-01 ...
- 【451】python 同一行打印进度条
参考:Python3 Print 同一行打印显示进度条效果 参考:\r\n, \r and \n what is the difference between them? [duplicate] 参考 ...
- python -m SimpleHTTPServer搭建简单HTTP服务
PYTHON自带HTTP服务,命令: python -m SimpleHTTPServer 使用上述命令将当前目录发布到8000端口,为当前进行,不是后台运行 指定端口: python -m Simp ...
- Elasticsearch6.2.1安装elasticsearch-sq插件
参考 https://github.com/NLPchina/elasticsearch-sql 1.下载插件 wget https://github.com/NLPchina/elasticsear ...
- Java 待学习知识
Java 工厂模式和策略模式 Java 面向对象与面向接口的设计模式 Java 六大设计原则 - 单一职责原则 设计模式之禅 大话设计模式
- 封装redis操作 php版本
<?php namespace App\Service; use App\Service\BaseService; use Illuminate\Support\Facades\Redis; / ...