一、方法

  方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用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. Linux查看文件的权限

    Linux查看权限命令: ls -l 文件或文件夹 输出结果示例: 这里是查看tomcat文件夹中所有子文件或者子文件夹的权限,以列表的形式列出. 关于列表的每列所代表的含义参见我的另外一篇博客:Li ...

  2. OpenFOAM——设置非均匀边界方法总结

    在使用OpenFOAM求解的时候我们经常需要设置非均匀的边界,比如我们在计算层流的时候,很多时候需要入口为充分发展的入口边界,下面我们就以入口处为充分发展的层流速度分布为总结OpenFOAM当中设定不 ...

  3. 你向 Mysql 数据库插入 100w 条数据用了多久?

    阅读本文大概需要 2 分钟. ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程 ...

  4. jquery实现select数据回显

    [html] view plain copy     <select class="div_select_re" id="edit_technicalGrade&q ...

  5. [技术博客] rails控制台调试路由

    目录 rails console 获得路由 app.xxx_path 发送请求 获得响应 作者:庄廓然 rails console 在项目目录下执行rails console test 可以进入测试模 ...

  6. 冰多多团队-第十次Scrum例会

    冰多多团队-alpha第十次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 牛雅哲 修复了Iatdemo语音接口的bug,整个demo pipeline跑通 为词库设计更多的扩展模块和扩展 ...

  7. Object changed by Unknown

    https://documentation.red-gate.com/soc7/troubleshooting/object-changed-by-unknown https://documentat ...

  8. c++ extra qualification

    原 c++ extra qualification 2013年01月15日 10:04:52 沈纵情 阅读数 9728   运行代码时候遇到了如下错误: extra qualification ‘Co ...

  9. python 使用 elasticsearch 常用方法(检索)

    #记录es查询等方法 #清楚数据 curl -XDELETE http://xx.xx.xx.xx:9200/test6 #初始化数据 curl -H "Content-Type: appl ...

  10. android文件分享在android7.0以上版本报错的解决方案

    最近在使用蓝牙进行文件分享时,出现了一个奇怪的问题.同样的代码在android5.1上可以顺利运行,但是在android7.0上就运行失败.出现如下的错误: Caused by: android.os ...