C#也允许函数默认参数
作为一个从C++过来的开发者,对于C#不能使用默认参数感到很不爽,因为这样的话明明写一个函数就可以实现的功能非得分成多个重载(overload)函数去写。但今天看到一个代码,突然发现C#原来也可以用默认参数,用法跟C++非常类似。
static void TestFun(int a = 10) { Console.Write(a.ToString()); } static void Main(string[] args) { TestFun(); }
太奇怪了,我明明记得不行的啊,要行的话我不早就这么用了?一开始我还以为是.net 4.0的新功能,但用VS2010编了一个.net Framework 2.0的程序测试,居然也没问题。于是让同事用VS2005试试看,发觉编译不过,原来不是.net的问题,而是编译器的问题,因为究竟调用什么函数,传什么参数,这其实都是在编译期决定的,考虑到自己最开始用C#的时候是用VS2008,到了VS2010之后就支持了(也可能是C#的新特性,OK,总之现在是可以的了)。
而且我发觉这个默认参数功能比C++的还强,例如:
static void TestFun(int a, int b = 10, int c=20) { Console.Write(a + " " + b + " " + c); } static void Main(string[] args) { TestFun(3, c:30); }
这样的话相当于制订了c的值,而b的值使用默认,而在C++中,要指定c的值,恐怕也一定得指定b的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人