[C#基础 小知识] 关键字

本文详细介绍了C#中的方法参数关键字如params、ref、out、in及其组合ref readonly,以及泛型关键字in和out的用法。解释了这些关键字如何影响方法参数的传递方式,并探讨了它们对泛型类型的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#关键字官方文档

方法参数关键字

1.params关键字

表示可选参数,一个方法中只能定义一个,后跟一维数组

2.ref关键字、out参数修饰符、in参数修饰符

三者都表示引用传递参数,三者在方法签名层面互斥,且不能用于异步方法和迭代器方法。

out仅能修饰方法参数,代表输出变量,允许传入未初始化甚至未声明(C#7.0)的变量,在方法中必须进行赋值,变量生存周期拓展至方法的外部区域。

in仅能修饰方法参数,代表该变量为只读属性,不允许在方法中进行赋值

ref不仅能修饰方法参数,还能修饰方法的返回类型(这种用法与out相比的区别在于,ref作用于值类型的返回类型时,方法会输出一个特有的ref sruct类型)

ref readonly 可以修饰方法参数和返回类型,代表变量为只读属性。

泛型关键字

泛型类型参数在默认情况下不支持协变和逆变

1.in泛型修饰符

表示该泛型类型参数T仅能作为输入变量使用,且其具有逆变(Contravariant)性质

简单来说,能用定义类型的子类进行输入。

2.out泛型修饰符

表示该泛型类型参数T仅能作为输出变量使用,且其具有协变(covariant)性质

简单来说,能输出为定义类型的基类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值