Phy*_*dha 81 c# naming-conventions
当我为业务逻辑对象编写一些扩展方法时,我遇到了重命名转换方法的问题.someObject.ToAnotherObject()
广泛使用会很好object.ToString()
.
但是,例如,LINQ混合了两种变体,我找不到它们之间的区别.ToDictionary()
,ToList()
,AsParallel()
,AsQueryable()
,...
这两个命名约定之间有什么区别,我应该知道如何决定是否使用我自己的类?
dca*_*tro 91
ToDictionary
并且ToList
以前缀为前缀,To
因为它们不一定保留原始集合或其属性的结构标识.
List<T>
转换为a Dictionary<K, V>
创建具有全新结构的集合.HashSet<T>
转换为a List<T>
将删除集的唯一性属性.带有前缀的方法As
不要做任何这些事情 - 它们只是提供原始集合的替代视图.他们丰富了它.
Jon*_*nna 26
在Linq中,ToXXX
方法都执行查询并从结果中创建新对象,而这些AsXXX
方法产生的新查询在某种程度上是不同的.它可以是相同的对象,但通过不同的接口访问(AsEnumerable()
做到这一点),或者它可能是一个新的对象,改变功能(其他方法做到这一点,虽然一些检查,看看他们是否可以只返回给定对象,如AsQueryable()
将source
如果它IQueryable<T>
已经实现则返回,否则创建一个新的EnumerableQuery<TElement>
).