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

C#方法之详解

一、方法基础语法‌

C#方法是封装代码逻辑的基本单元,用于执行特定操作并支持模块化编程‌。

  1. 定义与结构‌
    C#方法由访问修饰符、返回值、方法名、参数列表和方法体构成。基础语法如下:
[访问修饰符] [static] 返回值类型 方法名(参数列表)  
{  
    // 方法体  
}  
  • 访问修饰符‌:public、private 等控制方法可见性,默认类内方法为 private‌。
  • 返回值‌:无返回值时使用 void,否则需声明具体类型(如 int、string)‌。
  1. 参数传递‌
  • 值类型与引用类型‌:值类型参数传递副本,引用类型(如类对象)传递内存地址‌。
  • ‌可选参数‌:通过默认值实现,调用时可省略:
public void Print(string text, bool isBold = false) { ... }  
Print("Hello"); // 自动使用 isBold = false  
  • ‌命名参数‌:调用时指定参数名,提高可读性:
Print(isBold: true, text: "Warning");  
  • 可变参数‌:使用 params 接收数组:
public int Sum(params int[] numbers) { ... }  
Sum(1, 2, 3);  

二、方法重载与特殊类型‌

  1. 方法重载‌
    同一类中允许定义多个同名方法,‌参数列表必须不同‌(类型、数量或顺序):
public void Log(int code) { ... }  
public void Log(string message) { ... } // 合法重载  

注:返回值类型不参与重载判定‌。

  1. 静态方法‌
  • 使用 static 修饰,直接通过类名调用,无需实例化对象‌46。
  • 示例:
public static class MathUtils  
{  
    public static int Add(int a, int b) => a + b;  
}  
int sum = MathUtils.Add(3, 5);  
  1. 扩展方法‌
    通过 this 关键字为现有类型添加新方法,需在静态类中定义:
public static class StringExtensions  
{  
    public static bool IsNumeric(this string str)  
    {  
        return int.TryParse(str, out _);  
    }  
}  
bool result = "123".IsNumeric(); // 返回 true  
  1. 构造函数‌
    用于初始化对象,与类同名且无返回值:
public class Person  
{  
    public string Name { get; set; }  
    public Person(string name) => Name = name;  
}  

三、高级方法特性‌

  1. 异步方法‌
    使用 async/await 实现非阻塞操作,适用于I/O密集型任务:
public async Task<string> FetchDataAsync(string url)  
{  
    HttpClient client = new HttpClient();  
    return await client.GetStringAsync(url);  
}  

注:异步方法需返回 Task 或 Task 类型‌。

  1. ‌Lambda表达式‌
    简化匿名方法的定义:
Func<int, int> square = x => x * x;  
Console.WriteLine(square(5)); // 输出 25  
  1. ‌递归方法‌
    方法直接或间接调用自身,需注意终止条件:
public int Factorial(int n)  
{  
    if (n == 0) return 1;  
    return n * Factorial(n - 1);  
}  

四、使用建议

  1. 代码规范‌
  • 单一职责原则‌:每个方法仅完成一个明确任务‌。
  • 命名清晰‌:方法名使用动词短语(如 CalculateTax、ValidateInput)。

相关文章:

  • YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
  • 基于Prometheus+Grafana的Deepseek性能监控实战
  • PathRAG:通过图剪枝的方法优化Graph-based RAG的性能方法浅析
  • 第七章:Qt 实践
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-5.3.2实时配送范围计算(距离排序+多边形过滤)
  • 《PyCharm 重命名项目文件时遇到 java.io.IOException 的终极解决方案》
  • Jmeter下载安装配置及使用
  • ThinkPHP6用户登录系统的全过程
  • git操作
  • MAC查看自己真实IP命令
  • LINUX网络基础 [九] - IP协议
  • C语言_数据结构总结5:顺序栈
  • vue3自定义hooks遇到的问题
  • AIOPS架构师路径
  • Maven 私服 Nexus 简单使用
  • SSH 安全致命漏洞:渗透路径与防御策略
  • Python的文件
  • 使用dockerfile创建镜像
  • Ray|RLLib|Tune学习笔记
  • Windows10下docker desktop命令行操作指南(大部分也适用于Linux)
  • 如何设计产品网站建设/seosem顾问
  • 玉环专业做网站/网络营销推广案例
  • 子网站建设的好处/seo技巧seo排名优化
  • 宝山区建设用地事务所网站/seo外链收录
  • wordpress 链接 中文乱码/seo网站培训优化怎么做
  • 星巴克网站开发票吗/长沙官网优化公司