Csharp/CSharp Tutorial/Language Basics/params — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:19, 26 мая 2010
Содержание
Array As Actual Param: params int[] inVals
using System;
class MainClass {
public static void ListInts(params int[] inVals)
{
if (inVals != null)
for (int i = 0; i < inVals.Length; i++)
inVals[i] = inVals[i] * 10;
}
static void Main()
{
int[] MyArr = new int[] { 5, 6, 7 };
ListInts(MyArr);
foreach (int x in MyArr)
Console.WriteLine("{0}", x);
}
}
50 60 70
Demonstrate params
using System;
class Min {
public int minVal(params int[] nums) {
int m;
if(nums.Length == 0) {
Console.WriteLine("Error: no arguments.");
return 0;
}
m = nums[0];
for(int i=1; i < nums.Length; i++)
if(nums[i] < m) m = nums[i];
return m;
}
}
class MainClass {
public static void Main() {
Min ob = new Min();
int min;
int a = 10, b = 20;
// call with two values
min = ob.minVal(a, b);
Console.WriteLine("Minimum is " + min);
// call with 3 values
min = ob.minVal(a, b, -1);
Console.WriteLine("Minimum is " + min);
// call with 5 values
min = ob.minVal(18, 23, 3, 14, 25);
Console.WriteLine("Minimum is " + min);
// can call with an int array, too
int[] args = { 45, 67, 34, 9, 112, 8 };
min = ob.minVal(args);
Console.WriteLine("Minimum is " + min);
}
}
Minimum is 10 Minimum is -1 Minimum is 3 Minimum is 8
Mix params array type with other data types
using System;
class MainClass
{
public static void ArrayOfInts(string msg, params int[] list)
{
Console.WriteLine(msg);
for ( int i = 0 ; i < list.Length ; i++ )
Console.WriteLine(list[i]);
Console.WriteLine();
}
public static void Main()
{
int[] intArray = new int[3] {10,11,12};
ArrayOfInts("Here is an array of ints", intArray);
ArrayOfInts("Enjoy these 3 ints", 1, 2, 3);
ArrayOfInts("Take some more!", 55, 4, 983, 10432, 98, 33);
}
}
Here is an array of ints 10 11 12 Enjoy these 3 ints 1 2 3 Take some more! 55 4 983 10432 98 33
Sending in args using params keyword: object, int and string
using System;
class Person
{
public string fullName;
public int age;
public Person(string n, int a)
{
fullName = n;
age = a;
}
public void PrintInfo()
{
Console.WriteLine("{0} is {1} years old", fullName, age);
}
}
class MainClass
{
public static void ArrayOfObjects(params object[] list)
{
for ( int i = 0 ; i < list.Length ; i++ )
{
if(list[i] is Person)
{
((Person)list[i]).PrintInfo();
}
else
Console.WriteLine(list[i]);
}
Console.WriteLine();
}
public static void Main()
{
Person p = new Person("Fred", 93);
ArrayOfObjects(7, p, "System.String");
}
}
7 Fred is 93 years old System.String
Use "params int[]"
using System;
class MainClass
{
static void Main() {
int first = 5, second = 6, third = 7;
ListInts(first, second, third);
Console.WriteLine("{0}, {1}, {2}", first, second, third);
}
public static void ListInts(params int[] inVals)
{
for (int i = 0; i < inVals.Length; i++)
{
inVals[i] = inVals[i] * 10;
Console.WriteLine("{0} ", inVals[i]);
}
}
}
50 60 70 5, 6, 7
Use regular parameter with a params parameter.
using System;
class MyClass {
public void showArgs(string msg, params int[] nums) {
Console.Write(msg + ": ");
foreach(int i in nums)
Console.Write(i + " ");
Console.WriteLine();
}
}
class MainClass {
public static void Main() {
MyClass ob = new MyClass();
ob.showArgs("Here are some integers",
1, 2, 3, 4, 5);
ob.showArgs("Here are two more",
17, 20);
}
}
Here are some integers: 1 2 3 4 5 Here are two more: 17 20