选择性参数

"选择性参数( Optional Parameters )",顾名思义就是传参数给 method 时,想要选择性填入

未传的参数就是以默认值代入

"选择性参数( Optional Parameters )",顾名思义就是传参数给 method 时,想要选择性填入

未传的参数就是以默认值代入,如下:

public void test(int i, string str = "123")
{
  Message.Show(str);
}

这样在调用 test 这个 Method 时,就可以只打 test(5);

视情况决定是否输入 str 参数

使用的时候要注意以下几点:

1.选择性参数必须放在必要性参数后面

2.选择性参数必须是 compile time constant

如下例会显示 Default parameter value for ‘str‘ must be a compile-time constant?:

private static str123 = "123";
private void test(int i, string str = str123)
{
}

(因为如此,所以我没有办法将 MethodInfo 弄成选择性参数...?)

3.和.Net Framework 的版本无关,而是和编译器的版本有关,C# 从 4.0 版开始支持

即使目标是.Net Framework 2.0的框架,依然可以编译成功

4.重载时的顺序是:不用省略选择性参数 > 不用转型的函数

下面优先选取顺序为由上而下:

public void test()
public void test(string str = "123")
public void test(object str = "123")

以上注意事项有参考 larrynung 大大和 Bill Chung 大大在技术论坛的答复

特此感谢^^

原文:大专栏  选择性参数

原文地址:https://www.cnblogs.com/petewell/p/11509997.html

时间: 2025-01-07 12:35:37

选择性参数的相关文章

printf输出格式

tips:#为空格                                   Printf 格式化字符串  格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH                                                Printf格式化整型数值

进程操作篇atexit execl exit fprintf fscanf getpid nice get priority printf setpid system vfork wait waitpid

atexit(设置程序正常结束前调用的函数) 相关函数 _exit,exit,on_exit 表头文件 #include<stdlib.h> 定义函数 int atexit (void (*function)(void)); 函数说明 atexit()用来设置一个程序正常结束前调用的函数.当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用,然后才真正由exit()结束程序. 返回值 如果执行成功则返回0,否则返回-1,失败原因存于errno中. 范例 #

printf格式化打印

格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH Printf 格式化字符串 格式代码 1 -12 12345 123456789 %d 1 -12 12345 123456789 %6d #####1 ###-12 #12345 123456789 %.4d 0001 -0012 123

Oracle 学习之 性能优化(十三) 索引

一.索引概念 索引是一种供服务器在表中快速查找一个行的数据库结构.合理使用索引能够大大提高数据库的运行效率. 在数据库中建立索引主要有以下作用. (1)快速存取数据. (2)既可以改善数据库性能,又可以保证列值的唯一性. (3)实现表与表之间的参照完整性 (4)在使用order by.group by子句进行数据检索时,利用索引可以减少排序和分组的时间. 在关系数据库中,每一行都由一个行唯一标识RowID.RowID包括该行所在的文件.在文件中的块数和块中的行号.索引中包含一个索引条目,每一个索

VB.Net与C# 的语法比较

最近看代码或写代码时,经常把VB与C#的基本语法搞混,为方便查看,特对其异同进行对比: 變數初始化 VB.NET 自動將所有的變數初始化成 0 或 nothing.C# 在你未初始化變數之前不准你用該變數. 選擇性參數(Optional parameters) C# 不提供函數選擇性參數,但仍可以利用重载的方法,提供选择性参数 静态方法的定义 C# 和 VB.NET 都在 Class 支援靜態方法.屬性和 fields,C#中为Static,VB.NET 稱為 Shared,例如 publics

printf不同格式表示法

格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH Printf 格式化字符串 格式代码 1 -12 12345 123456789 %d 1 -12 12345 123456789 %6d #####1 ###-12 #12345 123456789 %.4d 0001 -0012 123

像计算机科学家一样思考python笔记

[TOC] #1 程序之道 ##1.1 Python程序语言 - 有两种程序可以让高级语言转换为低级语言,分别是直译器和编译器. - 有两种方式使用python的直译器:shell模式和脚本模式. ##1.8 形式语言和自然语言 - 自然语言是人们所说的语言. - 形式语言是人们为特定的应用设计的语言 *<b>程序语言是设计来呈现计算的形式语言</b>* 语法规则分为两种,分别属于标记和结构.标记是程序语言的基本组件,就像字词.数字和化学元素一样; 结构是标记的排列方法. >

ANSI_common-lisp

前言 本书的目的是快速及全面的教你 Common Lisp 的有关知识.它实际上包含两本书.前半部分用大量的例子来解释 Common Lisp 里面重要的概念.后半部分是一个最新 Common Lisp 辞典,涵盖了所有 ANSI Common Lisp 的操作符. 这本书面向的读者 ANSI Common Lisp 这本书适合学生或者是专业的程序员去读.本书假设读者阅读前没有 Lisp 的相关知识.有别的程序语言的编程经验也许对读本书有帮助,但也不是必须的.本书从解释 Lisp 中最基本的概念

进阶之路(基础篇) - 011 arduino api基础手册

arduino 函数 api 程序结构 在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数:void setup()void loop()setup() 函数用于初始化, loop() 函数用于执行. 初始化函数一般放在程序开头, 用于设置一些引脚的输出/输入模式, 初始化串口通讯等类似工作. loop() 函数中 的代码将被循环执行, 例如: 读入引脚状态, 设置引脚输出状态等. 控制语句if,if...else,for,switch,while,do.