C#函数参数默认值及指定传参

【唐老狮】C#——变长参数和参数默认值 之前我们对函数已经进行了学习,我们今天将来学习两个关于函数参数的小知识点。 【变长参数】 我们来回顾一下函数的基本语法 我们知道,函数的参数可以是n个,毫不夸张的说可以是无数个,只是一般的需求不会出现写无数个参数的情况。但是就上面这个例子来说,我想要求n个整数的和,过多的参数个数对于我们来说就是件麻烦的事情了。 所以C#提供给我们了一种变长参数的写法,让我们用于处理同类型多参数或者同类型不确定数量参数的问题。 【基本语法... 阅读详情
AI摘要

本文详细介绍了C#中如何使用默认参数,包括设置默认值、重写参数值以及参数传递的不同方式。通过示例展示了如何在函数声明时指定默认值,并在调用时灵活更改这些值。

最近在编写代码时发现介绍C#参数默认值不能像PL/SQL那样直接设置default,网上也没有太多详细的资料,自己琢磨并试验后整理成果如下:

  • C#允许在函数声明部分定义默认值

  • 参数默认值设定后,调用时可以不用填写有默认值的参数

  • 参数传递顺序,顺序调用在前,指定参数调用在后

前期操作——在winform中添加一个button


 

1.默认参数设置

一般函数声明

public void FuncPara(string a,string b)

设置默认值

public void FuncPara(string a="specify by default a",string b= "specify by default b")

public void FuncPara(string a="specify by default",string b= "specify by default")
    {
        MessageBox.Show(a +"\n"+ b+"\n");
    }
private void button1_Click(object sender, EventArgs e)
    {
        FuncPara();
    }

此时调用函数将采用默认值

messagebox出来的是:

specify by default a

specify by default b

2.默认参数重写

2.1在方法体中重写

public void FuncPara(string a="specify by default",string b= "specify by default")
    {
        b = "specify by function";
        MessageBox.Show(a +"\n"+ b+"\n");
    }
private void button1_Click(object sender, EventArgs e)
    {
        FuncPara();
    }

此时调用函数a将采用默认值,b的值被重写了

messagebox出来的是:

specify by default a

specify by function

2.2在调用时重写

public void FuncPara(string a = "specify by default a", string b = "specify by default b")
    {
        MessageBox.Show(a + "\n" + b + "\n");
    }
private void button1_Click(object sender, EventArgs e)
    {
        FuncPara( b: "specify by call");
    }

此时调用函数a将采用默认值,b的值在调用时被重写了

messagebox出来的是:

specify by default a

specify by call

3.参数传递时的顺序

原则先传顺序参数值,后传指定参数,没有指定参数的传值全部是按照顺序传递的

3.1顺序调用

这是最基本的参数调用方式,根据参数顺序传参,顺序参数在编写和调用时应当放在前面

编写函数首部时,有默认值参数一旦出现,后面的参数应当全部为有默认值的参数否则编译器会报错

正确写法

public void FuncPara(string c,string a="specify by default",string b= "specify by default")

  调用时

FuncPara("c","a","b");

  依次向参数c,a,b传值

错误写法

public void FuncPara(string a="specify by default",string c,string b= "specify by default")

3.2指定参数调用

你可以不按照顺序指定调用时的参数传值

public void FuncPara(string a="specify by default",string b= "specify by default")

  只指定b,a采用默认值

FuncPara( b: "specify by call");

messagebox出来的是:

specify by default a

specify by call

 

  只重新指定参数a的值,b采用默认值

FuncPara( a: "specify by call");

messagebox出来的是:

specify by call

specify by default b

3.3混合调用

public void FuncPara(string d,string c,string a="specify by default",string b= "specify by default")
    {
        b = "specify by function";
        MessageBox.Show(a +"\n"+ b+"\n" + d + "\n" + c + "\n");
    }
private void button1_Click(object sender, EventArgs e)
    {
        //调用时仅指定某一个参数的值其余采用默认值,可以混合顺序参数和指定参数传参
        //顺序参数在前,指定参数通过在参数名后加冒号
        FuncPara("this is para d","this is para c",b:"specify by call");
    }

 

Swift函数调用的参数传递需要加前缀是否是冗余?为什么会有函数调用参数带标签的写法?编程语言表达式和函数参数计算顺序都是从左到右吗?函数参数?一次返回多个值?函数声明?函数调用?函数默认参数? 本文探讨了编程语言中函数参数的相关概念和特性。文章首先解释了带标签参数写法的作用(提高多参数函数可读性),比较了不同语言(如Swift、ObjC、C#)的参数传递方式。接着分析了函数参数的计算顺序、参数列表与逗号表达式的区别,以及声明与调用类型不一致的问题。文章还介绍了多种独特的参数形式(如具名参数)、形参与实参的关系、隐式类型转换、参数默认值等特性,并对比了不同语言在这些方面的实现差异。最后讨论了函数作为参数、多返回值实现方式以及函数声明和调用的语法规则,特别是main函数的参数处理方式。 阅读详情

相关推荐

为什么会有函数调用参数带标签的写法?Swift函数调用的参数传递需要加前缀是否是冗余?函数调用?函数参数?

ObjC函数参数形式与众不同,实参前会加前缀,尤其参数很多的情况,可读性很强。例如:这种参数前面加前缀描述也被叫标签(Label). 注意,要把标签和函数签名区分开,函数签名是更大的名词,包含函数名称、参数的组合。当然,也可以对第二个之后的参数不加前缀,形如: [person setAge: 29 :1 : 35];如果是C++代码,参数很多,有时会记不清参数位置。C#较新版本同样引入了如上的类似ObjC的函数调用语法增强可读性。

编程语言开发、框架原理、编程思想、最佳实践技巧经验分享。致力于各种编程技术的技巧经验干货分享,讲解开发避坑技巧,追踪开发前沿技术,实战展开解决难题。 程序员小迷助您在编程路上越走越好! 1188

C# 参数的默认值

 C# 有2种不同的常量定义方式:编译时常量(compile-time) 和运行时常量(runtime)。所谓编译时常量,是以 const 关键字定义,所谓编译时是常量则以 readonly 关键字定义。   C# 规定参数的默认值必须是编译时能确定的常量值。   这些参数的类型可以是 C# 认定的基元类型。还可以包括枚举类型,以及能设

fanwenyuan_fwy的专栏 6026

C#中的函数参数默认值和指定传参

通过函数参数的默认值和指定传参,我们可以提高函数的灵活性和可重用性。而在调用函数时,通过指定参数名来传递参数值,可以根据需要只提供某些参数的值,而不必按照参数顺序传递。在上述代码中,我们使用了命名参数的方式,通过指定参数名来传递参数值。通过这种方式,我们可以根据需要仅提供某些参数的值,而不必按照参数顺序传递。当调用函数时,如果不提供相应的参数值,则会使用默认值作为参数的值。除了使用默认值,我们还可以在调用函数时显式指定参数的值。通过指定参数名,我们可以灵活地控制函数的行为,并传递特定的参数值。

BugHunterX的博客 962

C# 参数默认值

使用方法:在函数的参数列表中直接赋值 作用:使用函数时若不传入参数,则使用参数的默认值 注意:有多个参数时,有默认值的参数写在无默认值参数后面; 有params修饰的参数时,要写在params参数的前面 例子: static void Speak(string str = “无话可说”) { Console.WriteLine(str); } 使用Speak函数 Speak();//输出 无话可说 Speak(“你好啊”);//输出 你好啊 ...

记录 4492

C# 可变参数和参数默认值

可变参数和参数默认值是 C# 中非常有用的特性。可变参数允许你在方法定义中接受不定数量的参数,而参数默认值允许你为参数提供默认值,使方法调用更加灵活。可变参数是指在方法定义中允许接受不定数量的参数。参数默认值是指在方法定义中为参数提供一个默认值。在 C# 编程语言中,可变参数和参数默认值是两个重要的特性,它们提供了更灵活的方法来定义和调用方法。你可以向该方法传递任意数量的整数参数,方法将计算它们的总和并返回结果。如果传递了参数,则使用传递的值。同时,你也可以将可变参数和参数默认值结合在一起使用。

PixelShadeZ的博客 324

图灵奖:计算机科学领域的诺贝尔奖

最后,图灵奖也是计算机科学领域发展的重要推动力之一,它促进了该领域的进步和繁荣。图灵奖作为计算机科学领域的诺贝尔奖,不仅是对获奖者卓越贡献的肯定,更是对整个计算机科学领域的推动和激励。在未来的发展中,我们期待看到更多的科学家和团队在图灵奖的激励下不断取得新的突破和创新成果为计算机科学的发展注入新的活力和动力。Vinton G. Cerf和Robert E. Kahn:2004年图灵奖得主,由于他们在互联网方面开创性的工作而获奖,这包括设计和实现了互联网的基础通讯协议TCP/IP,以及在网络方面的卓越领导。

wangnvshibeib的博客 2626

C# 基本语法-变长参数和参数默认值

using System; namespace lesson9_变长参数和参数默认值 { class Program { #region 函数语法复习 //1.静态关键词 可选 目前对于我们来说必须写 //2.返回值 没有返回值void 可以填写任意类型的变量 //3.函数名 帕斯卡命名法 //4.参数可以是0到n个 前面可以加 ref和out 用来传递想要在函数内部改变内容的变量 //5.如

weixin_61541885的博客 301

机械臂速成小指南(八):标准DH法实战——从连杆坐标系到运动学方程

本文详细介绍了机械臂运动学建模中的标准DH法,从连杆坐标系的建立到运动学方程的求解,提供了实用的操作步骤和代码示例。通过DH参数表和变换矩阵的构建,帮助读者快速掌握机械臂运动学建模的核心技术,并解决实际应用中的常见问题。

oo7890的博客 211

Unity基础之C#基础篇笔记5:变长参数和参数默认值,函数重载

Unity基础之C#基础篇笔记5:变长参数和参数默认值,函数重载变长参数和参数默认值1.函数语法复习2.变长参数关键字3.参数默认值4.总结5.练习题函数重载1.基本概念2.实例3.总结4.习题 变长参数和参数默认值 1.函数语法复习 1 2 3 4 static 返回类型 函数名(参数类型参数名1,参数类型参数名2,.......) { 函数的代码逻辑; 函数的代码逻辑; 函数的代码逻辑; .........; 5 return返回值;(如果有返回类型才返回)

qq_42481369的博客 2000

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7502

对话系统简介

《文本上的算法》学习笔记1、问答型1.1、基于语义分析的方法1.2、基于信息抽取的方法1.3、端对端的方法2、任务型2.1、生成式模型( Generative Model )2.2、判别式模型( Discrimitive Model )2.3、规则系统3、闲聊型3.1、规则方法3.2、生成模型3.3、检索方法 个人认为NLP领域最难的方向可以说是阅读理解与文本生成/摘要,而对话系统,尤其是闲聊常常...

盘一哈nlp 6752

C#函数的多参数的选择传参 和返回多个返回值

C# 方法 ref out Tuple 元组 多个返回值的函数

SmillCool的博客 3491

robot framework循环读取excel表操作

robot framework循环读取excel表操作 1、安装excellibrary,注意python3.7版本,需安装:robotframework-excel,robotframework-excellibrary-xwfintech 注意:网上有很多excel处理的,都是基于python2.7的,还有一些对python3以上都是修改包的方式,其实都不需要,在pip官网上有python3以上的excellibrary,名称是robotframework-excellib 2.0.0,但是该包关键字不

余墨的博客 1319

【C# 4可选参数深度解析】:掌握默认值设计的5大黄金法则

掌握C# 4可选参数的默认值设计精髓,提升代码简洁性与可维护性。详解适用场景、编译时绑定机制、常量表达式限制、版本兼容性处理及最佳实践原则,助你写出更高效的API接口与方法重载方案。值得收藏的深度指南,点击了解。

CodePulse的博客 756

STM32实现等精度测频

上一章介绍了利用STM32的TIM的捕获功能实现频率测量的方法,但测量误差受被测信号频率的影响,不适合测量频率变化较大的。本章将介绍等精度测频的方法以及STM32的实现。STM3...

zhang062061的专栏 3457

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 646

【C# 4可选参数深度解析】:掌握默认值设计精髓,提升代码简洁性与可维护性

掌握C# 4可选参数默认值的正确用法,提升方法重载设计效率。详解其在接口兼容、构造函数简化中的应用,结合命名参数实现灵活调用。代码更简洁,维护更高效,值得收藏。

InstrIsle的博客 474

【即插即用模块】注意力篇 | TGRS 2025 | SCPP:独家复现!三特征多尺度注意力融合,涨点必备!

摘要:SCPP(Scale-aware Pyramid Pooling)是一种创新的多尺度特征融合模块,专为U型网络瓶颈设计。它通过局部特征提取(1×1卷积)、多尺度膨胀卷积(1/3/5膨胀率分支)和全局特征聚合(全局平均池化)三重结构,结合SE通道注意力机制和自适应加权融合,显著提升特征表达能力。实验表明,SCPP能有效解决边缘模糊和错误检测问题,在遥感图像分割等任务中表现优异。该模块支持即插即用,适用于各类需要多尺度特征增强的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 944

【.NET开发必知】:C# 4可选参数默认值的6种高阶应用场景

掌握C# 4可选参数默认值的高阶用法,提升代码简洁性与可维护性。涵盖方法重载替代、接口默认实现、构造函数简化等6大应用场景,详解参数设计技巧与运行时行为优势。适用于.NET开发中常见架构优化,值得收藏。

CodePulse的博客 384

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# 4.0可选参数实战指南(默认值传递机制大揭秘)

掌握C# 4可选参数默认值的正确用法,提升方法调用效率。详解可选参数在接口、构造函数中的应用场景,揭示编译时默认值嵌入机制的优势与陷阱。代码更简洁,维护更高效,值得收藏。

LogicNest的博客 265

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python字典get方法的默认值类型陷阱(资深工程师避坑指南)

掌握Python字典get方法的默认值类型陷阱,避免因类型不一致导致的隐蔽bug。详解适用场景与正确用法,提升代码健壮性。理解Python字典get的默认值类型的关键细节,值得收藏。

QuickTrans的博客 666

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# 可选参数默认值陷阱揭秘:90%开发者忽略的5个关键细节

掌握C# 4可选参数默认值的正确用法,避免编译与运行时陷阱。详解适用场景、参数绑定规则、版本兼容性问题及最佳实践,提升代码健壮性。90%开发者忽略的关键细节,值得收藏。

InstrGap的博客 407

变长参数与参数的默认值

举例:函数要计算n个整数的和变长参数关键字——paramsparams int[]意味着可以传入n个int参数,n可以等于0,传入的参数会存在arr数组中。1.params关键字后面必为数组2.数组的类型可以是任意的类型3.函数参数可以有别的参数和params关键字修饰的参数4.函数参数中只能最多出现一个params关键字,并且一定是在最后一组参数,前面可以有n个其他参数。

Luo3255069063的博客 329

C#方法参数革命(可选与命名参数实战指南)

掌握C# 4 可选参数与命名参数,提升方法调用效率与代码可读性。适用于简化重载、优化接口设计,减少冗余代码。详解语法规范与实战应用场景,显著增强程序灵活性与维护性,值得收藏。

LogicGlow的博客 957

C# 传参为NULL时处理

string dbname = Request.QueryString[@"dbname"] ?? string.Empty; 当dbname接收到为NULL时,dbname为NULL

jiva1的专栏 1540

Lesson9_变长参数和参数默认值

【代码】Lesson9_变长参数和参数默认值。

2501_91319803的博客 171
下一篇: C#接口多态实例
programerbismark
博客等级 码龄11年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值