一个优秀的JavaScript库JQuery的优点是能够将您正在处理的元素作为返回值。这是我所指的一个例子:
$(function() {
$("#poo").css("clear", "both").css("margin", "10px");
});
我想在此处尝试实现的内容与上面的C#IDictionary
interface
代码完全相同。我的目的是能够正确编码如下:
IDictionary<string, string> myDictionary =
new Dictionary<string, string>().
Add("key1", "value1").
Add("key2", "value2").
Add("key3", "value3");
所以我为IDictionary
创建了一个扩展方法:
public static IDictionary<string, string> AddAndReturn(this IDictionary<string, string> dictionary, string key, string value) {
dictionary.Add(key, value);
return dictionary;
}
现在我可以像使用它一样:
IDictionary<string, string> poo =
new Dictionary<string,string>().
AddAndReturn("key1", "value1").
AddAndReturn("key2", "value2").
AddAndReturn("key3", "value3");
所以,至于这里的问题,我想知道我是否在这里遵循正确的道路。
我正在做一个穷人流利的界面实现还是完全无关?
在C#中是否有任何已知的此实现案例?
答案 0 :(得分:6)
虽然您的实现模式是正确的(并且是常见的),但您的用例可能不是最佳选择。 Object 集合初始值设定项也适用于字典类型:
var poo = new Dictionary<string,string> {
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" }, // this is permissible
};
编译器神奇地将其转换为Add(字符串,字符串)调用。顺便说一下,最后一对之后显然是错误的逗号是故意的。编译器允许这样做,因此您可以简化代码生成器中的逻辑,例如T4。
答案 1 :(得分:0)
我还想补充一些关于“C#中是否存在此实现的已知案例?”
StringBuilder.Append
方法返回StringBuilder,使方法可链接,例如sb.Append("a").Append("b"). Append("c")
。
但是在.Net中没有很多其他的例子。