gpt4 book ai didi

c# - 何时使用 MergeAttribute 而不是 Attributes.Add

转载 作者:行者123 更新时间:2023-11-30 21:03:05 26 4
gpt4 key购买 nike

当使用 TagBuilder 时,可以使用 TagBuilder.Attributes.Add(..)TagBuilder。 MergeAttribute(..) 向正在构建的 HTML 元素添加属性:

TagBuilder formBuilder = new TagBuilder("form");
formBuilder.Attributes.Add("method", "get");
formBuilder.Attributes.Add("action", url);

TagBuilder buttonBuilder = new TagBuilder("input");
buttonBuilder.MergeAttribute("type", "submit");
buttonBuilder.MergeAttribute("value", buttonText);

但这两者有何不同,什么时候我应该更喜欢一个呢?

最佳答案

通过使用 dotPeek 查看 TagBuilder,我可以看到 Attributes 是一个 SortedDictionary

来自构造者:

this.Attributes = new SortedDictionary<string, string>(StringComparer.Ordinal);

在 SotredSet 上调用 Add 以调用内部函数 AddIfNotPresent(item) 结束

public bool Add(T item)
{
return this.AddIfNotPresent(item);
}

这意味着 Attributes.Add 与不设置 replaceExisting == true 调用 MergeAttribute 相同。

   public void MergeAttribute(string key, string value, bool replaceExisting)
{
...

if (!replaceExisting && this.Attributes.ContainsKey(key))
return;
this.Attributes[key] = value;
}

因此我的建议是使用 MergeAttribute 而不是 Add 并始终指定 replaceExisting 以提高可读性并确保不会出现意外结果。

关于c# - 何时使用 MergeAttribute 而不是 Attributes.Add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com