在我看来,好像C#编译器中存在错误/不一致.
这工作正常(第一个方法被调用):
public void SomeMethod(string message, object data);
public void SomeMethod(string message, params object[] data);
// ....
SomeMethod("woohoo", item);
Run Code Online (Sandbox Code Playgroud)
然而,这导致"以下方法之间的调用不明确"错误:
public void SomeMethod<T>(string message, T data);
public void SomeMethod<T>(string message, params T[] data);
// ....
SomeMethod("woohoo", (T)item);
Run Code Online (Sandbox Code Playgroud)
我可以完全使用转储第一个方法,但由于这是一个性能非常敏感的库,并且第一个方法将在大约75%的时间内使用,我宁愿不总是将数据包装在一个数组中并实例化一个迭代器去如果只有一个项目,则超过foreach.
分裂成不同的命名方法最好是IMO凌乱.
思考?
编辑:
我想安德鲁可能会做点什么.
完整示例:
public static class StringStuffDoer
{
public static string ToString<T>(T item1, T item2)
{
return item2.ToString() + item1.ToString();
}
public static string ToString<T>(T item, params T[] items)
{
StringBuilder builder = new StringBuilder();
foreach (T currentItem in items) …
Run Code Online (Sandbox Code Playgroud) 我最近开始考虑优化,现在我知道有很多书籍和文章,但我有一个我感兴趣的特殊场景.
一个.
for (i = 0; i < limit + 5; i++)
cout << test;
Run Code Online (Sandbox Code Playgroud)
B.
limit2 = limit +5;
for (i = 0; i < limit2; i++)
cout << test;
Run Code Online (Sandbox Code Playgroud)
我想知道的是第二段代码运行得更快,因为它只需要进行一次数学计算,或者是在循环的生命周期内存储的计算.