C#:在方法调用中直接创建并传递变量

时间:2010-07-08 10:01:25

标签: c# syntax

我想知道如何在参数括号中直接声明新变量并将其传递给它:

MethodA(new int[]) //but how to fill the array if declared here? E.g. how to declare and set string?


MethodA(int[] Array)
...

如果需要声明一个对象(带有构造函数参数的类)怎么办?在参数列表中仍然可以吗?

6 个答案:

答案 0 :(得分:7)

MethodA(new int[] { 1, 2, 3 }); // Gives an int array pre-populated with 1,2,3

MethodA(new int[3]); // Gives an int array with 3 positions

MethodA(new int[] {}); // Gives an empty int array

你可以对字符串,对象等做同样的事情:

MethodB(new string[] { "Do", "Ray", "Me" });

MethodC(new object[] { object1, object2, object3 });

如果要将字符串传递给方法,请执行以下操作:

MethodD("Some string");

string myString = "My string";
MethodD(myString);

<强>更新 如果要将类传递给方法,可以执行以下操作之一:

MethodE(new MyClass("Constructor Parameter"));

MyClass myClass = new MyClass("Constructor Parameter");
MethodE(myClass );

答案 1 :(得分:2)

你可以试试这个:

MethodA(new int[] { 1, 2, 3, 4, 5 });

这样您就可以实现所要求的功能。

似乎无法在参数列表中声明变量;但是你可以使用一些常用的技巧,比如调用一个创建和初始化变量的方法:

int[] prepareArray(int n)
{
    int[] arr = new int[n];
    for (int i = 0; i < n; i++)
        arr[i] = i;
    return arr;
}

...
MethodA(prepareArray(5));
...

使用字符串,为什么不使用字符串文字:

MethodB("string value");

答案 2 :(得分:0)

new int[0]new int {}都适合您。您也可以传递值,如new int {1, 2, 3}中所示。适用于列表和其他集合。

答案 3 :(得分:0)

在您的情况下,您需要声明MethodB(string[] strArray)并将其称为MethodB(new string[] {"str1", "str2", "str3" })

P.S。 我建议您从C#教程开始,例如this一个。

答案 4 :(得分:0)

你的意思是:

MethodA("StringValue"); ??

答案 5 :(得分:0)

作为旁注:如果你添加了params关键字,你可以简单地指定多个参数,它们将自动包装成一个数组:

void PrintNumbers(params int[] nums)
{
    foreach (int num in nums) Console.WriteLine(num.ToString());
}

然后可以将其称为:

PrintNumbers(1, 2, 3, 4); // Automatically creates an array.
PrintNumbers(new int[] { 1, 2, 3, 4 });
PrintNumbers(new int[4]);