有谁知道任何命名约定规则/指南规定何时使用“To”前缀(myVariable.ToList()
)、“As”前缀(myVariable.AsEnumerable()
)或“Get”前缀(myVariable.GetHashCode()
)?
6 回答
我认为没有约定,所以只需使用最适合您正在做的事情。
- “To”创造新事物/转换它
- “作为”只是通过使用对同一 fe 的“不同视图”
iterators
- “Get”是其他一切的吸气剂
我的理解/约定:
"To" 执行转换;基于源中固有的数据在内存中创建一个新对象。
"As" 进行强制转换;传入的相同引用在不同类型的“掩码”后面返回。
“获取”几乎可以执行任何其他接收源并且其主要产品是转换结果的东西。Gets 可以执行计算、返回子项、从存储中检索数据、从默认状态实例化对象等。并非所有此类方法都必须命名为“Get”,但大多数方法旨在计算、实例化、投影或其他转换,然后返回产品,因为它们的主要目的是“吸气剂”。
- 当
myObj
与 不相关时List
,前缀“To”进行转换。 - 何时
myObj
是 的子类Enumerable
,前缀“As”以将其作为 Enumerable - 什么时候
myObj
不相关List
,但它组成/可以组成List
使用“Get”前缀
I would say that To
vs As
has more to do with differences like class
vs interface
i e you are saying AsEnumerable
when you really want to return something that implements interface.
ToList
on opposite returns new object which is representation of current state of current object, ie ToDictionary
just another way of representing same data.
Third ones Get
methods returns some properties of the object OR something about part of it's state and not the full state.
如果您在数据库上使用 Entity Framework 进行 CRUD 操作,那么使用 .ToList() 将使您的查询在此处执行,而不是使用 AsEnumerable() ,后者将使用延迟执行,直到您实际尝试访问记录。
那是我从头顶上想到的。
As
是对现有数据的重新解释。AsEnumerable
什么也没做。它被实现为return input;
.
To
意味着转换。
Get
并不暗示任何前者。
您会发现与这些规则的有效偏差。它们不是一成不变的。