C#对象[]是否可以作为内联参数?
如果我有一个这样声明的方法:C#对象[]是否可以作为内联参数?,c#,C#,如果我有一个这样声明的方法: private void someFunction(object[] param1) Object[] myParam1 = new Object[2] myParam1[0] = "blah"; myParam1[1] = "blah blah"; someFunction(myParam1); private void someFunction(params object[] param1) 调用此函数时,是否必须将对象数组声明为变量,或者是否有一种
private void someFunction(object[] param1)
Object[] myParam1 = new Object[2]
myParam1[0] = "blah";
myParam1[1] = "blah blah";
someFunction(myParam1);
private void someFunction(params object[] param1)
调用此函数时,是否必须将对象数组声明为变量,或者是否有一种更快/快捷的方法将其内联传递给函数调用
我是这样做的:
private void someFunction(object[] param1)
Object[] myParam1 = new Object[2]
myParam1[0] = "blah";
myParam1[1] = "blah blah";
someFunction(myParam1);
private void someFunction(params object[] param1)
在我的实际代码中,不是在这个示例中,我是从Marshal调用COM,每次我必须声明参数时,代码都变得很混乱
someFunction(新[]{“诸如此类”、“诸如此类”、“更多”、“等等”})代码>您可以使用C#3.0中引入的数组初始值设定项:
如果您的方法声明如下:
private void someFunction(object[] param1)
Object[] myParam1 = new Object[2]
myParam1[0] = "blah";
myParam1[1] = "blah blah";
someFunction(myParam1);
private void someFunction(params object[] param1)
你甚至可以写:
someFunction("blah", "blah blah");
可以使用数组初始值设定项:
someFunction(new object[]{"blah", "blah blah"});
您还可以更改someFunction的签名,使param1成为params数组:
private void someFunction(params object[] param1)
那么你甚至不需要初始值设定项;只需将每个“元素”作为自己的参数传递,编译器就会将它们抛出一个数组中:
someFunction("blah", "Blah Blah");
一个音符;编译器必须能够将数组元素的类型推断为对象以外的其他类型,非类型化数组初始值设定项才能工作。如果您尝试了someFunction(new[]{“blah”,“blah blah”,new MyObject})代码>它不会工作得这么好。但是,string[]
可以被视为object[]
,因此这种特殊情况可以使用。