Jon*_*ell 8 .net c# dictionary tuples
我有代码,我返回一个IWebElements列表及其相应的名称?我的理解是,具有两个项目的元组基本上是相同的,但是Dictionary使用哈希映射来关联这两个值.在字典上使用Two Item Tuple有什么好处,反之亦然?
public Dictionary<IWebElement, string> SelectAllOptions(IWebDriver driver, ref DataObject masterData)
{
//Get the ID of the dropdown menu
DatabaseRetrieval.GetObjectRepository(ref masterData);
var strDropMenuId = masterData.DictObjectRepository["ID"];
//Find the dropdown menu and pull all options into a list
try
{
var dropMenu = new SelectElement(driver.FindElement(By.Id(strDropMenuId)));
// TODO want to know how we want this list to return.
var options = dropMenu.Options as List<IWebElement>;
if (options != null)
{
var values = options.ToDictionary(option => option, option => option.Text);
return values;
}
}
Run Code Online (Sandbox Code Playgroud)
das*_*ght 14
作为一般规则,您不希望"支付" *以获得您的程序不需要的可能性.例如,如果您的程序有兴趣检索和处理一对对(也称为"双成员元组"),但它不需要从元组的第一个成员到第二个成员执行查找,那么提供一个集合对更有效:
IEnumerable<Tuple<IWebElement, string>> SelectAllOptions(...)
Run Code Online (Sandbox Code Playgroud)
当然,如果该返回的数据结构被用于查找,那么应该返回一个字典,或构建体上的客户端侧的一个从所述服务器传输的一些CPU负荷的给客户端.
*内存,CPU周期,可读性降低等.
A Tuple<T1, T2>
代表一对值.那对并不一定意味着"这两个项目是相关的".当使用a时KeyValuePair<TKey, TValue>
,你会期望给定一个键,你会得到一个值,两者之间会有某种联系.
元组实施IComparable
和IStructuralEquatable
,这使得它更容易比较的元组.除此之外,我会从逻辑角度来看待它,我是否需要将给定的键与值匹配?或者我只需要将两个值耦合在一起,而类可能会有一些开销.
正如我所看到的,Tuples的一个缺点是你必须处理标记为Item1和Item2的属性,这可能会使它的可读性降低一些.
另外,请记住,元组是一个class
(不可变的)并且KeyValuePair
是一个结构,所以当你将它们作为参数传递时,你通过引用传递元组,按值传递KeyValuePair(除了显式声明ref
或out
)
归档时间: |
|
查看次数: |
4134 次 |
最近记录: |