C#,入门教程(22)——函数的基础知识

上一篇:

C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124140653

一、函数的基本概念

一个软件的结构大体如下:

大厦application: a plaza
{
----有若干层namespace: have some levels
----{
--------每一层有若干房间class: level have some rooms
--------{
------------房间有一些东西attributes: rooms have some things
------------房间里面可以用这些东西搞一些事情functions: and can do somethings with somethings.
--------}
----}
}

函数与属性都是结构体、类的组成部分。
属性(字段)用于保存数据。
函数就是用数据处理,并得到一些记过的功能性程序模块。
函数既可以处理本类/结构体的数据,也可以处理外部的其他数据。

public class className
{public int AttName { get; set;} = 0;public string OutputAtt(){return String.Format("{0:D8}", AttName);}
}

二、函数的不同应用场景

1、有些函数“只进不出”

public void Step()
{Att += 1;
}

2、有些函数“只出不进”

public string Print()
{return String.Format("{0:D8}", Att);
}

3、有些函数“又进又出”

public string PrintD8(int a)
{return String.Format("{0:D8}", a);
}

a 称为“参数”。参数可以很多,用逗号分开即可。

public int Sum(int a, int b)
{return (a + b);
}

4、更复杂的数据

public int Sum(int[] a)
{int sum = 0;for(int i=0; i<a.Length; i++){sum += a[i];}return sum;
}

5、怎么得到多个计算结果?

public int[] Sum(int[] a)
{int sum = 0;int max = int.MinValue;int min = int.MaxValue;for(int i=0; i<a.Length; i++){sum += a[i];if(a[i] < min) min = a[i];if(a[i] > max) max = a[i];}return new int[3] { min, max, sum };
}

6、如果多个返回值类型不统一,怎么办?

public double Mean(int[] a, out int min, out int max, out int sum)
{sum = 0;max = int.MinValue;min = int.MaxValue;for(int i=0; i<a.Length; i++){sum += a[i];if(a[i] < min) min = a[i];if(a[i] > max) max = a[i];}return ((double)sum / a.Length);
}

7、修改参数的数据?

一般而言,参数仅仅作为原始数据传入函数,不能修改参数的数据。
需要一点点技术的定义。

public void MoveTo(ref int[] p, double rad, double angle)
{p[0] += rad * Math.Cos(angle * Math.PI / 180.0);p[1] += rad * Math.Sin(angle * Math.PI / 180.0);
}

三、关于函数的高级知识

1、重载 override 与 重写 new

2、委托 delegate 与 接口 interface

3、递归方法 Recurse Method

这些知识是后面会逐个讲解的,先列出目录。

四、关于函数的更多要点

1、每个函数不要写太多行!

2、只要是可能重复的,都写成函数(模块化!)

3、追求功能而不是性能的前提下,可用传入参数,而不是直接使用属性;

4、函数的名字要用全称的英语单词,不要简写或莫名其妙的,比如 AA BB WC。

下一篇:

C#,入门教程(23)——数据类型转换的一点基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124187182
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421479.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幻兽帕鲁服务器搭建

前情提要&#xff1a;周末弄了个 幻兽帕鲁 的服务器&#xff0c;和朋友一起玩&#xff0c;幻兽帕鲁 自己的服务器人太多了(全网最简单的幻兽帕鲁私服搭建教程). 需要准备的东西 假如你没有云服务器的话&#xff0c;你需要知道本机的公网ip&#xff0c;个人是推荐购买一台云服…

基于 GPT 和 Qdrant DB 向量数据库, 我构建了一个电影推荐系统

电影推荐系统自从机器学习时代开始以来就不断发展&#xff0c;逐步演进到当前的 transformers 和向量数据库的时代。 在本文中&#xff0c;我们将探讨如何在向量数据库中高效存储数千个视频文件&#xff0c;以构建最佳的推荐引擎。 在众多可用的向量数据库中&#xff0c;我们将…

浮点型在内存中的存储

浮点数在内存中的储存方式是按IEEE 754标准的 &#xff08;-1&#xff09;的S次方*M*2的E次方 即&#xff08;-1&#xff09;^S*M*2^E &#xff08; S是0或1&#xff0c;用来表示正负&#xff0c;0为正&#xff0c;1为负&#xff09; [M是浮点数转化为二进制后的二进制科学…

JVM工作原理与实战(二十三):堆的垃圾回收-引用计数法和可达性分析法

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、判断堆上的对象是否可以回收 1.引用计数法 2.可达性分析算法 二、查看垃圾回收日志 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理…

【OCR项目】之用HALCON的深度学习工具进行文字识别,并导出到C++调用

前言 HALCON是一个强大的机器视觉工具&#xff0c;包含了2D&#xff0c;3D图像各种算子&#xff0c;以及各种任务的深度学习工具&#xff0c;包括目标检测&#xff0c;实例分割&#xff0c;文字识别等。 这次从实际生产的角度&#xff0c;来分享一下如何用HALCON进行文字识别…

Modbus网关BL101 既实现Modbus转MQTT,还能当串口服务器使用

随着工业4.0的迅猛发展&#xff0c;人们深刻认识到在工业生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的工业电力数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化系统、远程监控和物联网应用应用环境…

持续集成工具Jenkins的使用之安装篇(一)

Jenkins是一个基于Java开发的开源的一种持续集成工具&#xff0c;主要用于环境部署&#xff0c;监控重复性的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。要想使用它&#xff0c;你就必须的先安装&#xff0c;接下来我们就介绍下J…

ctfshow-反序列化(web267-web270)

目录 web267 web268 web269 web270 总结 web267 页面用的什么框架不知道 看源码看一下 框架就是一种软件工具&#xff0c;它提供了一些基础功能和规范&#xff0c;可以帮助开发者更快地构建应用程序。比如Yii框架和ThinkPHP框架就是两个流行的PHP框架&#xff0c;它们提供…

【Linux多线程】生产者消费者模型

目录 生产者消费者模型 1. 生产者消费者模式的概念 2. 生产者消费者模型优点 ​编辑3. 生产者消费者模型的特点 基于BlockingQueue&#xff08;阻塞队列&#xff09;的生产者消费者模型 1.BlockingQueue 2. 使用CSTL中的queue来模拟实现阻塞队列 3. 基于任务的生产者消费…

html 会跳舞的时间动画特效

下面是是代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta h…

Spring Boot3.2.2整合MyBatis Plus3.5.5

目录 1.前置条件 2.导坐标 3.配置数据源 4.配置mapper扫描路径 5.MyBatis Plus代码生成器整合 1.导坐标 2.编写代码生成逻辑 1.前置条件 已经初始化好一个spring boot项目且版本为3X&#xff0c;项目可正常启动 2.导坐标 <dependency><groupId>com.baomid…

Mysql-全局锁、表锁、行锁

本文已收录于专栏 《数据库》 目录 全局锁概述说明开启方式应用场景 表锁概念说明实现方式意向锁 开启方式 行锁概念说明实现方式记录锁&#xff1a;间隙锁临键锁 总结提升 全局锁 概述说明 全局锁是是对整个数据库实例加锁&#xff0c;加锁后整个实例就处于只读状态&#xff…