一、方法

  方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用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. v-model和 .sync

    1.v-model的双向数据绑定其实是一个语法糖,类似于,给子组件传入一个value值,并且监听子组件的input事件,在这个事件里将子组件传过来的新值赋值给父组件的value <Input v ...

  2. js逆向分析之acorn和escodegen的使用

    替换之前的d形如 d("77696669") 执行代码 const fs = require('fs'); const acorn = require('acorn'); cons ...

  3. 写一个eggjs权限验证中间件

    关于中间件 https://eggjs.org/zh-cn/basics/middleware.html 官方文档说的很清楚了,不再叙述. 我们要达到怎么样一个效果? 用户没有登录不能访问一些特定的页 ...

  4. 工具系列 | 使用FormData方式上传文件

    服务端代码 /** * 文件上传 */ public function uploadFile() { Log::error('文件上传 : '.json_encode($_FILES)); $dir ...

  5. js中[object Object]与object.prototype.toString.call()

    最近在用node读取文件中的json数据后,用JSON.parse()转成了json,然后响应数据传给前端,发现输出值object对象时显示[object object],在这里我们来看一下他的具体意 ...

  6. 大数据web管理工具——HUE

    一.概述 HUE是一个开源的Apache Hadoop UI系统,早期由Cloudera开发,后来贡献给开源社区.它是基于Python Web框架Django实现的.通过使用Hue我们可以通过浏览器方 ...

  7. vs查找替换功能打不开!

    其实解决办法很简单啊 vs--窗口--重置窗口布局

  8. php的工厂模式

    特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性. <?php // **** 共同接口 **** // interface DB { f ...

  9. Cordova 实现沉浸式(透明)状态栏效果

    沉浸式状态栏(Immersive Mode)和透明状态栏(Translucent Bar). 这两个概念很多地方的解释都不是很清晰,所以导致很多人都各有各的认识.所以这里我也有一个自己的认识,笔者认为 ...

  10. Kubernetes之在k8s中部署Java应用

    部署好了k8s以后 部署参考https://www.cnblogs.com/minseo/p/12055731.html 怎么在k8s部署应用 项目迁移到k8s平台是怎样的流程 1,制作镜像 2,控制 ...