c# – 列出,不要丢失参考
从采访回来.我与您分享,欢迎提供一个好的,准确的答案.
目的,你有一个静态方法,这个方法接收一个IList< int>你有 约束: 额外奖励:如何更改代码以接收int而不是float,double,…. static void Main(string[] args) { IList<int> list = new List<int>() { 9,3,10,6,14,16,20}; CanBeDivedByThree(list); } static void CanBeDivedByThree(IList<int> list) { list = (from p in list where p % 3 == 0 orderby p descending select p).ToList<int>(); } 解决方法
这是毫无意义的,因为IList的内部存储不在您的控制之下.添加(或可能删除)项可能会重新分配内部数据结构.
它特别没有意义,因为示例中的列表包含在您访问它们时无论如何都要复制的值类型. 最后但并非最不重要的是,它基本上是使用托管语言的全部要点,您不必担心内存(al)位置.这样的东西是implementation details的平台. 接受你的奖金问题:没有简单的方法来实现这一目标.可以认为使用具有类型约束的泛型将解决这里的问题(类似于静态void CanBeDivedByThree< T>(IList< T> list),其中T:struct),但问题是C#没有(还有?)支持通用算术. C#没有模运算符,可以采用类型为’T’和’int’的泛型参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |