c# – 可变数量的参数,而不包含值类型?
发布时间:2020-12-15 04:05:45 所属栏目:百科 来源:网络整理
导读:public void DoSomething(params object[] args){ // ...} 上述签名的问题是,将传递给该方法的每个值类型将被隐式包装,这对我来说是严重的性能问题. 有没有办法解决一个接受可变数量的参数的方法,而不用包装value-types? 谢谢. 解决方法 你可以使用泛型: p
public void DoSomething(params object[] args) { // ... } 上述签名的问题是,将传递给该方法的每个值类型将被隐式包装,这对我来说是严重的性能问题. 有没有办法解决一个接受可变数量的参数的方法,而不用包装value-types? 谢谢. 解决方法
你可以使用泛型:
public void DoSomething<T>(params T[] args) { } 但是,这只允许指定单一类型的ValueType.如果您需要混合或匹配值类型,则必须像现在所做的那样允许拳击发生,或为不同数量的参数提供特定的重载. 编辑:如果您需要多种类型的参数,您可以在某种程度上使用重载来完成此操作. public void DoSomething<T,U>(T arg1,params U[] args) {} public void DoSomething<T,T arg2,params U[] args) {} 不幸的是,这需要为您的类型存在多个重载. 或者,您可以直接传递数组: public void DoSomething<T,U>(T[] args1,U[] args2) {} 你失去了很好的编译器语法,但是你可以传递任意数量的两个参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |