C#写入和调用方法

news/2024/5/30 17:34:42/文章来源:https://blog.csdn.net/qq_42497776/article/details/136604033

一、编写方法

在C#中,方法是在类或结构体内部定义的代码块,用于执行特定的操作。方法通常包括以下几个要素:

  • 访问修饰符:指定方法的访问级别,如 public、private、protected 等。
  • 返回类型:指定方法返回的数据类型,可以是任何有效的C#数据类型,甚至可以是void,表示不返回任何值。
  • 方法名称:方法的标识符,用于在其他地方调用该方法。
  • 参数列表:可选部分,包含传递给方法的数据。
  • 方法体:包含实际执行的代码,即方法的功能实现。

调用方法

一旦定义了方法,您就可以通过创建该方法所属类的实例来调用它。要调用方法,需要使用以下格式:

ClassName methodName = new ClassName();
methodName.YourMethod(parameters);

其中:
ClassName 是包含要调用方法的类的名称。
methodName 是类的实例化对象。
YourMethod 是要调用的方法名称。
parameters 是方法需要的参数列表,如果方法不需要参数,则留空即可。
调用方法时,程序将执行该方法中定义的操作,并根据情况可能返回一个值或执行某些操作。

二、从方法返回值

方法可以返回一个值,这通过使用方法签名中的返回类型来定义。例如,下面是一个返回整数值的简单方法的示例:

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

在这个示例中,Add 方法接受两个整数参数并返回它们的和。
返回值类型有:整数类型(int、long)、浮点数类型(float、double)、布尔类型(bool)、字符类型(char)、字符串、自定义类型、数组、枚举、接口和委托等。

三、使用元组组合多个返回值

元组(Tuple)是C# 7.0及更高版本中引入的一种数据结构,它允许您将多个值组合成单个对象。使用元组可以方便地从方法中返回多个值,而无需显式定义新的类或结构体。
元组本质上是一个轻量级的临时数据结构,用于在不创建新类型的情况下组合多个值。在使用元组时,您可以通过位置索引或命名元素来访问其中的值。
对于返回多个值的场景,元组提供了一种简洁的方式来实现,而不需要为每种场景都专门定义新的数据类型。这使得编写和调用方法变得更加灵活和简洁。
元组是一种用于组合多个值的数据结构,它提供了一种轻量且方便的方式来处理方法返回多个值的情况。

public (int, string) GetValues()
{int number = 10;string text = "Hello";return (number, text);
}

在此示例中,GetValues 方法返回一个包含整数和字符串的元组。

四、重载方法

方法重载允许在同一个类中创建多个具有相同名称但参数列表不同的方法。这使得您可以根据需要选择调用不同版本的方法。例如:

public void DisplayInfo(string name)
{// 显示关于名称的信息
}public void DisplayInfo(string name, int age)
{// 显示包含名称和年龄的信息
}

在上述示例中,我们定义了两个名为 DisplayInfo 的方法,一个接受一个参数,另一个接受两个参数。

五、传递可选参数和命名参数

C#中的方法可以包含可选参数,这些参数在调用方法时可以被省略。您可以通过给参数设置默认值来实现可选参数。例如:

public void PrintMessage(string message, bool isUppercase = false)
{if (isUppercase){Console.WriteLine(message.ToUpper());}else{Console.WriteLine(message);}
}

在这个示例中,PrintMessage 方法具有一个可选参数 isUppercase,如果不提供该参数,则默认为 false。

除了可选参数,C#还支持命名参数,这允许您在调用方法时以任意顺序指定参数,并明确标识参数的名称。例如:

PrintMessage(message: "Hello", isUppercase: true);

在这个示例中,我们使用命名参数来调用 PrintMessage 方法,明确指定了参数的名称和对应的值。

六、控制参数的传递方式

ref 关键字

  1. 使用 ref 关键字声明的参数表示引用参数。这意味着在方法内对引用参数所做的更改会反映在调用方法的原始变量上。
  2. 在调用方法时,必须初始化引用参数,即确保在将其传递给方法之前已为其分配了内存空间。
  3. 引用参数在传递给方法之前和方法内部均可进行更改。因此,ref 参数允许双向数据流:方法可以读取并修改原始变量的值。

out 关键字

  1. 使用 out 关键字声明的参数也表示引用参数。与 ref 不同的是,在调用方法时不要求初始化 out 参数。
  2. 在方法内部,必须为 out 参数赋值。这意味着 out 参数主要用于从方法中返回多个值。
  3. 由于 out 参数在传递给方法时无需初始化,因此适合用于在方法内部创建新的对象或重新分配内存。
    参数的传递方式可以是按值传递(默认)、引用传递或输出传递。当您需要改变传入参数的值时,可以使用引用传递或输出传递。例如:
// 引用传递
public void Increment(ref int number)
{number++;
}// 输出传递
public void GetValues(out int a, out int b)
{a = 10;b = 20;
}

七、使用 partial 关键字分割类

在C#中,可以使用 partial 关键字来将类、结构体或接口的定义拆分成多个部分,每个部分可以在不同的文件中实现。这对于大型项目或自动生成的代码非常有用。例如:

public partial class MyClass
{// 第一部分类的实现
}// File2.cs
public partial class MyClass
{// 第二部分类的实现
}

希望上述有关C#方法的解释对您有所帮助。无论是定义方法、调用方法、返回值、重载方法、可选参数和命名参数、控制参数传递方式还是使用 partial 关键字分割类,在C#中都有着广泛的应用。如果您对C#方法或其他方面有进一步的疑问,欢迎随时向我提问。祝您编程愉快!

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

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

相关文章

HTML静态网页成品作业(HTML+CSS)——电影加勒比海盗介绍设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)--稳定高质量文案生成器

Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)–稳定高质量文案生成器 1.LangGPT介绍 现有 Prompt 创建方法有如下缺点: 缺乏系统性:大多是细碎的规则,技巧,严重依赖个人经验缺乏灵活性:对他人分享的优质 …

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结: github 模拟登录 前言 前面学习了requests模块的基础学习后,接下来做一个…

【开发】微服务整合Sentinel

目录 前言 1W:什么是Sentinel? 2W:为什么使用Sentinel? 3W:如何使用Sentinel? 1. 在pom.xml中导入Sentinel依赖坐标 2. 配置控制台 3. 访问API接口的任意端点 流量控制 1. 簇点链路 2. 快速入门…

springboot整合swagger,postman,接口规范

一、postman介绍 1.1概述 工具下载 Postman(发送 http 请求的工具) 官网(下载速度比较慢):Download Postman | Get Started for Free 网盘下载:百度网盘 请输入提取码 1.2Http 请求格式 请求地址请求方法状…

sqllab第六关通关笔记

知识点: 报错注入回顾原始语句测试截取函数 mid(字符串,起始位置,长度)substr(字符串,起始位置,长度)left(字符串,长度)right(字符串,长度)加入截取控制的错误注入payload payload:id1"%2…

在 Shell 中转换 Python 正则表达式

在Shell中,我们通常可以使用sed命令来转换Python正则表达式。sed是一个流编辑器,可以用来对文本进行替换、删除等操作。下面是一个示例,演示如何在Shell中将Python正则表达式转换为适用于sed的格式,也是比较稳妥的一种方式。 如上…

前端之用html做一个用户登陆界面

用户登陆界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>用户注册页面</title></head> <body><form action"https://www.baidu.com" method"post">…

opencv的approxPolyDP函数

cv2.approxPolyDP() 是 OpenCV 库中的一个函数&#xff0c;用于逼近多边形曲线。它可以将一条曲线用更少的点来表示&#xff0c;同时尽可能地保持其形状。原来是使用Douglas-Peucker算法&#xff0c;表示曲线上的点与逼近后的多边形之间的最大距离d&#xff0c;若d小于epsilon&…

如何恢复丢失未保存的 Word 文档指南

在广阔的数字领域&#xff0c;对丢失未保存的 Word 文档的恐惧对于用户来说是再熟悉不过的焦虑了。本指南旨在对用户可能发现自己迫切需要恢复未保存文档的各种场景进行详尽的探索。无论是由于保存失败、意外的系统崩溃还是令人心碎的意外删除&#xff0c;请放心&#xff0c;我…

【Vite+Ts】自动按需引入Element-Plus

安装插件 cnpm i -D unplugin-vue-components unplugin-auto-import unplugin-element-plus修改vite.config.ts // vite.config.ts import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; impor…

以太坊ETF获批将至

作者&#xff1a;BitMEX Research 编译&#xff1a;秦晋 摘要&#xff1a;在这篇文章中&#xff0c;我们讨论了以太坊ETF将在美国获得批准的可能性。我们尤其关注质押的经济学&#xff0c;以及缺乏收益率会如何在一定程度上削弱非质押以太坊ETF产品的吸引力。我们还研究了实施质…

CBNet(AAAI 2020)论文解析

paper&#xff1a;CBNet: A Novel Composite Backbone Network Architecture for Object Detection official implementation&#xff1a;GitHub - VDIGPKU/CBNet_caffe: Composite Backbone Network (AAAI20) 背景 一般来说&#xff0c;在基于CNN的目标检测模型中&#xff…

JAVA-网络编程基础

JAVA-网络编程 01. 网络通信 概念&#xff1a;两台设备之间通过网络实现数据传输网络通信&#xff1a;将数据通过网络从一台设备传输给另一台设备java.net包下提供了一系列类或接口&#xff0c;供程序员使用&#xff0c;完成网络通信 02. 网络 概念&#xff1a;两台设备或…

【PLIO学习总结】laserMapping中的时间戳与状态更新逻辑

本文仅用于个人学习总结记录。如有错误&#xff0c;请批评指正。 0、PLIO简要思路 从PLIO的论文中&#xff0c;可以知道&#xff0c;完整的PLIO算法采用IMU和LiDAR数据同时作为“输入”&#xff0c;维护状态变量包括加速度和角速度。 同时&#xff0c;PLIO是一种distortion-…

300分钟吃透分布式缓存-21讲:Redis读取请求数据后,如何进行协议解析和处理?

Redis 协议解析及处理 协议解析 上一课时讲到&#xff0c;请求命令进入&#xff0c;触发 IO 读事件后。client 会从连接文件描述符读取请求&#xff0c;并存入 client 的 query buffer 中。client 的读缓冲默认是 16KB&#xff0c;读取命令时&#xff0c;如果发现请求超过 1GB…

keycloak18.0.0==前后端分离项目中使用,前端react后端springboot

配置keycloak 启动keycloak18 新建一个realm,名字叫test1 新建两个client&#xff0c;一个用于前端&#xff0c;一个用于后端 第一个 react http://localhost:8081/auth/realms/test1/react/ 第二个 backend-service 在两个client下分别创建role testRole backend-servic…

王道OnlineJudge 14

题目 二叉树层次建树就是一层一层的建树&#xff0c;从左到右。随着纵向层次的深入&#xff0c;结点的数量变化规律为&#xff1a;1→2→4→8→16→32。 先画图&#xff0c;然后看图可闭眼写代码 右边为辅助队列&#xff0c;有多少个二叉树结点&#xff0c;就有多少个辅助队…

构建高效可靠的消息队列系统:设计与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

万字完整版【C语言】指针详解~

一、前言 初始指针&#xff08;0&#xff09;&#xff1a;着重于讲解指针的概念、基本用法、注意事项、以及最后如何规范使用指针深入指针&#xff08;1&#xff09;&#xff1a;讲解指针变量常见的类型&#xff0c;如何去理解这些类型、最后就是如何正确的使用深入指针&#…