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 ...
随机推荐
- 帝国cms伪静态设置方法
众所周知,动态页面不利于收录和排名.伪静态可以完美的解决这问题,配合百度云加速CDN,可以让动态页面有静态页面一样快的访问速度. 今天开拓族给大家带来帝国CMS伪静态的详细设置方法. 1.栏目设置为动 ...
- 在Rancher中添加为中国区优化的k8s应用商店的步骤和方法
1.停用 rancher 应用商店中的“Rancher官方认证”商店和“社区贡献”商店 2.添加应用商店: 名称 地址 ...
- PowerDesigner应用01 逆向工程之配置数据源并导出PDM文件
物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设计,包括数据库的存储过程.操 ...
- iptables只允许指定ip访问本机的指定端口
首先,清除所有预设置 iptables -F 其次,设置只允许指定ip地址访问指定端口 1.在tcp协议中,禁止所有的ip访问本机的1521端口. iptables -I INPUT -p tcp - ...
- Gamma阶段第四次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- android gradle使用阿里源
使用阿里源 新建一个init.gradle 文件到$USER_HOME/.gradle/目录下,这们就省的翻墙了. init.gradle 文件内容如下: allprojects { reposito ...
- 各种字符串Hash函数(转)
/// @brief BKDR Hash Function /// @detail 本 算法由于在Brian Kernighan与Dennis Ritchie的<The C Programmin ...
- wikiquote
發現了一個很好玩的網站wikiquote,上面有很多引用的句子 比如關於編程語言的說法 https://en.m.wikiquote.org/wiki/Category:Programming_lan ...
- Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server(转)
Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server 转:https://blog.csdn.net/gdali/article/details/82912542 ...
- anaconda 安装指定源的包
当前知道的有两种方式可以查找: 1.conda search 命令:conda search pkg_name 安装的时候直接:conda install cudatoolkit=版本后 conda ...