Tag: 成语

非虚拟接口(NVI)习惯用法在C#和C ++中一样有用吗?

在C ++中,我经常需要NVI来获得API的一致性。 不过,在C#中我没有看到它用得那么多。 我想知道是不是因为C#作为一种语言,提供的function使NVI变得不必要了? (尽管如此,我仍然在C#中使用NVI。)

“GetOrCreate” – 这个成语是否有确定的名称?

好吧,考虑一下我们大多数人多次使用过的常见习语(我假设): class FooBarDictionary { private Dictionary fooBars; … FooBar GetOrCreate(String key) { FooBar fooBar; if (!fooBars.TryGetValue(key, out fooBar)) { fooBar = new FooBar(); fooBars.Add(key, fooBar); } return fooBar; } } 它有任何确定的名称吗? (是的,它是用C#编写的,但它可以“轻松”转移到C ++。因此该标签。)