考虑这个代码
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] strings = new string[] { "Test1", "Test2", "Test3" };
int[] ints = new int[] { 1, 2, 3, 4 };
Test(strings);
Test(ints);
}
public static void Test(params object[] objects)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个页面https://msdn.microsoft.com/fr-ca/library/w5zay9db.aspx
我希望(params object []对象)是一个元素的数组,以字符串[]作为第一个元素,但是当我调试时,我看到(params object []对象)是{"Test1","Test2" ","Test3"}.
但是,使用int [],我得到一个object [],其中int []作为第一个元素.
这是未定义的行为吗?这取决于.Net框架版本/ Mono版本吗?
是否可以将NUnit的[TestCaseSource]属性与多个参数一起使用?这是我的代码(从MbUnit迁移):
public IEnumerable<object[]> GetTestSwitchMultiItems()
{
yield return new object[] { SwitchType.Sell, 0.94733,
new SwitchSourceItem[] { new SwitchSourceItem(1176, 100, 50, SwitchSourceItem.QuantityType.TotalQuantity, SwitchType.Sell)},
new SwitchEquivalentItem[] { new SwitchEquivalentItem(415318955, 35, 25, SwitchType.Buy), new SwitchEquivalentItem(4348, 65, 45, SwitchType.Buy) } };
yield return new object[] { SwitchType.Sell, 0.94733,
new SwitchSourceItem[] { new SwitchSourceItem(1176, 100, 50, SwitchSourceItem.QuantityType.TotalQuantity, SwitchType.Sell)},
new SwitchEquivalentItem[] { new SwitchEquivalentItem(415318955, 15, 25, SwitchType.Buy), new SwitchEquivalentItem(4348, 25, 45, SwitchType.Buy),
new SwitchEquivalentItem(430397879, 20, 15, SwitchType.Buy), new SwitchEquivalentItem(5330, 20, 85, SwitchType.Buy)} };
}
[Test, TestCaseSource("GetTestSwitchMultiItems")]
public …Run Code Online (Sandbox Code Playgroud)