一、方法

  方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用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#类型成员:方法的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(5):类型成员

    前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...

  2. NET设计规范二:类型成员设计

    http://www.cnblogs.com/yangcaogui/archive/2012/04/20/2459567.html 接着 → .NET设计规范一:设计规范基础 上一篇,我们来了解下类型 ...

  3. C++ static、const和static const类型成员变量声明以及初始化

    C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. sta ...

  4. F2工作流引擎参与者类型成员的交、并、互拆计算规则

          计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行. 计算算法:并集(权重最低),交集(权重中) ...

  5. 【翻译自nikic大神】PHP中原生类型的方法

    引言 第一次,翻译别人的文章,用四级英语的水平来翻译~~囧,可能有很多不太恰当的地方,尽管拍砖(有些地方实在想不到恰当的翻译,我同时贴出了原文和自己很low的翻译). 翻译这篇文章用了我3个晚上一个中 ...

  6. [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器

    前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...

  7. C#原始类型扩展方法—this参数修饰符

    扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual ...

  8. C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器

    前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...

  9. javascript 关于Date 时间类型 处理方法

    上一篇博客中和大家分享了关于 字符串转时间类型 这一篇顺便整理下 javascript 中 Date 类型的一些方法 var time = new Date(); var year=time.getY ...

  10. 关于通过JS识别浏览器类型的方法

    JS检测浏览器类型的方法   网络上一般采用navigator.userAgent判断浏览器标识的办法,但是有个麻烦的问题是IE11不断升级之后,IE11的userAgent变成: "Moz ...

随机推荐

  1. 【Beta】Scrum Meeting 9 & 助教参会记录

    目录 前言 任务分配 燃尽图 会议照片 签入记录 上周助教交流总结 Q:项目进度如何? Q:有关commit与issue关联的问题? Q:人员变动后分工的变化情况? Q:接下来还有什么新功能? Q:大 ...

  2. 《Maven实战》整理

    一.maven介绍 Maven是优秀的构建工具,能够帮我们自动化构建过程,从清理.编译.测试到生成报告,再到打包和部署. Maven能帮助我们标准化构建过程.在Maven之前,十个项目可能有十种构建方 ...

  3. oc界面开发整理

    oc界面开发整理 ViewController.h from test82 #import <UIKit/UIKit.h> @interface ViewController : UIVi ...

  4. Composer教程

    介绍   PHP程序的包管理器   负责, 配置需要的项目, 项目需要的项目. 解决, 项目的依赖问题.   当前的PHP项目, 当作一个软件包去看待.   思路: 将软件集中在统一的软件源中. 安装 ...

  5. Oracle 11g R2手动配置EM(转)

    转自:http://blog.itpub.net/9034054/viewspace-1973418/ Oracle 11g R2手动配置EM Oracle 作者:luashin 时间:2016-01 ...

  6. 【451】python 同一行打印进度条

    参考:Python3 Print 同一行打印显示进度条效果 参考:\r\n, \r and \n what is the difference between them? [duplicate] 参考 ...

  7. python -m SimpleHTTPServer搭建简单HTTP服务

    PYTHON自带HTTP服务,命令: python -m SimpleHTTPServer 使用上述命令将当前目录发布到8000端口,为当前进行,不是后台运行 指定端口: python -m Simp ...

  8. Elasticsearch6.2.1安装elasticsearch-sq插件

    参考 https://github.com/NLPchina/elasticsearch-sql 1.下载插件 wget https://github.com/NLPchina/elasticsear ...

  9. Java 待学习知识

    Java 工厂模式和策略模式 Java 面向对象与面向接口的设计模式 Java 六大设计原则 - 单一职责原则 设计模式之禅     大话设计模式

  10. 封装redis操作 php版本

    <?php namespace App\Service; use App\Service\BaseService; use Illuminate\Support\Facades\Redis; / ...