"params" is not expanded, unless necessary C# with Example



"params" is not expanded, unless necessary C# with Example

The following program: 
class Program 
{ 
static void Method(params Object[] objects) 
{ 
System.Console.WriteLine(objects.Length); 
} 
static void Method(Object a, Object b) 
{ 
System.Console.WriteLine("two"); 
} 
static void Main(string[] args) 
 

{ 
object[] objectArray = new object[5]; 
Method(objectArray); 
Method(objectArray, objectArray); 
Method(objectArray, objectArray, objectArray); 
} 
} 
will print: 
5 
two 
3 
The call expression Method(objectArray) could be interpreted in two ways: a single Object argument that happens 
to be an array (so the program would output 1 because that would be the number of arguments, or as an array of 
arguments, given in the normal form, as though the method Method did not have the keyword params. In these 
situations, the normal, non-expanded form always takes precedence. So, the program outputs 5. 
In the second expression, Method(objectArray, objectArray), both the expanded form of the first method and 
the traditional second method are applicable. In this case also, non-expanded forms take precedence, so the 
program prints two. 
In the third expression, Method(objectArray, objectArray, objectArray), the only option is to use the expanded 
form of the first method, and so the program prints 3. 

0 Comment's

Comment Form