当前位置: 首页 > news >正文

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
 

相关文章:

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

上一篇&#xff1a; C#&#xff0c;入门教程(21)——命名空间&#xff08;namespace&#xff09;与程序结构的基础知识https://blog.csdn.net/beijinghorn/article/details/124140653 一、函数的基本概念 一个软件的结构大体如下&#xff1a; 大厦application: a plaza { --…...

已经30了,5年多,只会功能测试的怎么办?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这两天一直在和网易的朋友聊软件测试的发展&#xff0c;这一行的…...

什么是UML?有什么用?

2、什么是UML?有什么用&#xff1f; UML 是 Unified Model Language的缩写&#xff0c;中文是统一建模语言&#xff0c;是由一整套图表组成的标准化建模语言。 UML 是一种统一建模语言&#xff0c;一种图标式语言&#xff08;画图的&#xff09; UML 不是只有 Java 中使用&…...

盘点好用内容合规监测工具

网页敏感内容监测 Web Purify 由 WebPurify 提供&#xff0c;这是一个专门从事内容审核和过滤服务的公司。 核心功能 ● 文本审核&#xff1a;加强脏话过滤&#xff0c;标记仇恨言论、偏执、性挑逗等 ● 图片审核&#xff1a;让个人资料照片、社交应用程序、产品定制远离令…...

CC工具箱使用指南:【查找锐角】

一、简介 在面要素中&#xff0c;尖锐角往往是有问题的地方。 在一系列空间分析后&#xff0c;通常会遗留下来部分尖锐角&#xff0c;需要手动处理。 但是人工去找出这些尖锐角又比较麻烦&#xff0c;这个工具的目的就是找出面要素边界的尖锐角。 二、工具参数介绍 右键点击…...

kafka消费相关问题(GPT回答版本)

kafka消费相关问题&#xff08;GPT回答版本&#xff09; 在Java中&#xff0c;要避免重复消费Kafka消息&#xff0c;可以使用以下方法 1. 使用消费者组&#xff1a; 在设置Kafka消费者时&#xff0c;可以指定一个消费者组。一个消费者组中可以有多个消费者实例&#xff0c;每…...

【C++】string的基本使用二

我们接着上一篇的迭代器说起&#xff0c;迭代器不只有正向的&#xff0c;还有反向的&#xff0c;就是我们下边的这两个 它的迭代器类型也是不同的 rbegin就是末尾&#xff0c;rend就是开头&#xff0c;这样我们想遍历一个string对象的话就可以这样做 int main() {string s1(…...

MATLAB解决考研数学一题型(上)

闲来无事&#xff0c;情感问题和考研结束后的戒断反应比较严重&#xff0c;最近没有什么写博文的动力&#xff0c;抽空来整理一下考研初试前一直想做的工作——整理一下MATLAB解决数学一各题型的命令~ 本贴的目录遵循同济版的高数目录~ 目录 一.函数与极限 1.计算双侧极限 2…...

Vue以弹窗形式实现导入功能

目录 前言正文 前言 由于个人工作原因&#xff0c;偏全栈&#xff0c;对于前端的总结还有些初出茅庐&#xff0c;后续会进行规整化的总结 对应的前端框架由&#xff1a;【vue】avue-crud表单属性配置&#xff08;表格以及列&#xff09; 最终实现的表单样式如下&#xff1a;…...

分布式锁原理及实现

目录 一、锁的使用场景 二、如何实现控制&#xff1f; 三、单台服务器使用锁的场景 四、分布式锁 五、Redis 实现分布式锁及存在问题 六、Redisson 实现分布式锁 七、定时任务&#xff0b;锁 一、锁的使用场景 1. 控制定时任务执行 定时任务多次执行浪费资源&#xff…...

蓝桥杯官网填空题(海盗与金币)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 12名海盗在一个小岛上发现了大量的金币&#xff0c;后统计一共有将近5万枚。 登上小岛是在夜里&#xff0c;天气又不好。由于各种原因&#xff0c;有的海盗偷拿了很…...

JavaScript 中JSON 字符串和对象之间的转换。

JSON.stringify() 方法&#xff08;对象转换为 JSON 字符串&#xff09; 用于将 JavaScript 对象转换为 JSON 字符串。 它接受一个 JavaScript 对象作为参数&#xff0c;并返回对应的 JSON 字符串表示。例如&#xff1a; const obj { name: John, age: 25 }; const jsonStr…...

All the stories begin at installation

Before installation, there are some key points about Conan: “Conan is a dependency and package manager for C and C languages.”“With full binary management, Conan can create and reuse any number of different binaries (for different configurations like a…...

Linux文件系统与设备文件

Linux文件系统与设备文件 文章目录 Linux文件系统与设备文件Linux文件操作文件操作系统调用C库文件操作 Linux文件系统Linux文件系统目录结构Linux文件系统与设备驱动file结构体inode结构体file结构体和inode结构体的区别 devfsudev用户空间设备管理sysfs文件系统与Linux设备模…...

QT的绘图系统QPainterDevice与文件系统QIODevice

QT的绘图系统&#xff08;QPainterDevice&#xff09;与文件系统&#xff08;QIODevice&#xff09; 文章目录 1、Qt 的绘图系统1、QPainter的使用2、QPen(画笔&#xff09;及QBursh&#xff08;画刷&#xff09;3、手动更新窗口4、绘图设备1、四种绘图设备的 区别2、 QBitmap3…...

Spark流式读取文件数据

流式读取文件数据 from pyspark.sql import SparkSession ss SparkSession.builder.getOrCreate() # todo 注意1&#xff1a;流式读取目录下的文件 --》一定一定要是目录&#xff0c;不是具体的文件&#xff0c;# 目录下产生新文件会进行读取# todo 注意点2&#xff1…...

Leetcode 3011. Find if Array Can Be Sorted

Leetcode 3011. Find if Array Can Be Sorted 1. 解题思路2. 代码实现 题目链接&#xff1a;3011. Find if Array Can Be Sorted 1. 解题思路 这一题挺简单的&#xff0c;就是一个分组进行排序考察&#xff0c;我们将相邻且bit set相同的元素划归到同一组&#xff0c;然后进…...

Databend 开源周报第 129 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持标准流 标…...

python 正则表达式学习(1)

正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 1. 特殊符号 1.1 符号含义 模式描述^匹配字符串的开头$匹配字符串的末尾.匹配任意字符&#xff0c;除了换行符&#xff0c;当re.DOTALL标记被指定时&#xff0c;则可以匹配包…...

安全防御-基础认知

目录 安全风险能见度不足&#xff1a; 常见的网络安全术语 &#xff1a; 常见安全风险 网络的基本攻击模式&#xff1a; 病毒分类&#xff1a; 病毒的特征&#xff1a; 常见病毒&#xff1a; 信息安全的五要素&#xff1a; 信息安全的五要素案例 网络空间&#xff1a…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...