CATEGORII DOCUMENTE |
Variables represent storage locations. Every variable has a type that determines what values can be stored in the variable. Local variables are variables that are declared in methods, properties, or indexers. A local variable is defined by specifying a type name and a declarator that specifies the variable name and an optional initial value, as in:
int a;
int b = 1;
but it is also possible for a local variable declaration to include multiple declarators. The declarations of a and b can be rewritten as:
int a, b = 1;
A variable must be assigned before its value can be obtained. The example
class
Test
}
is invalid because it attempts to use the variable a before it is assigned a value. The rules governing definite assignment are defined in 5.3.
A field (10.4) is a variable that is associated with a class or struct, or an instance of a class or struct. A field declared with the static modifier defines a static variable, and a field declared without this modifier defines an instance variable. A static field is associated with a type, whereas an instance variable is associated with an instance. The example
using System.Data;
class
Employee
shows an Employee class that has a private static variable and two public instance variables.
Formal parameter declarations also define variables. There are four kinds of parameters: value parameters, reference parameters, output parameters, and parameter arrays.
A value parameter is used for "in" parameter passing, in which the value of an argument is passed into a method, and modifications of the parameter do not impact the original argument. A value parameter refers to its own variable, one that is distinct from the corresponding argument. This variable is initialized by copying the value of the corresponding argument. The example
using System;
class
Test ', p);
p++;
}
static void
F(a);
Console.WriteLine('post: a
= ', a);
}
}
shows a method F that has a value parameter named p. The example produces the output:
pre: a =
1
p = 1
post: a = 1
even though the value parameter p is modified.
A reference parameter is used for "by reference" parameter passing, in which the parameter acts as an alias for a caller-provided argument. A reference parameter does not itself define a variable, but rather refers to the variable of the corresponding argument. Modifications of a reference impact the corresponding argument. A reference parameter is declared with a ref modifier. The example
using System;
class Test
static void
int x = 1;
int y = 2;
Console.WriteLine('pre: x
= , y = ', x, y);
Swap(ref x, ref y);
Console.WriteLine('post: x
= , y = ', x, y);
}
}
shows a Swap method that has two reference parameters. The output of the program is:
pre: x =
1, y = 2
post: x = 2, y = 1
The ref keyword must be used in both the declaration of the formal parameter and in uses of it. The use of ref at the call site calls special attention to the parameter so that a developer reading the code will understand that the value of the argument could change as a result of the call.
An output parameter is similar to a reference parameter, except that the initial value of the caller-provided argument is unimportant. An output parameter is declared with an out modifier. The example
using System;
class Test
static void
for (int i = 1; i < 10; i++)
for (int j = 1; j < 10;
j++) {
int ans, r;
Divide(i, j, out ans,
out r);
Console.WriteLine('
/ = r', i, j, ans, r);
}
}
}
shows a Divide method that includes two output parameters-one for the result of the division and another for the remainder.
For value, reference, and output parameters, there is a one-to-one correspondence between caller-provided arguments and the parameters used to represent them. A parameter array enables a many-to-one relationship: many arguments can be represented by a single parameter array. In other words, parameter arrays enable variable length argument lists.
A parameter array is declared with a params modifier. There can be only one parameter array for a given method, and it must be the right-most parameter. The type of a parameter array is always a single dimensional array type. A caller can either pass a single argument of this array type, or any number of arguments of the element type of this array type. For instance, the example
using System;
class
Test
{
static void F(params int[] args) {
Console.WriteLine('# of
arguments: ', args.Length);
for (int i = 0; i < args.Length;
i++)
Console.WriteLine('targs[]
= ', i, args[i]);
}
static void
}
}
shows a method F that takes a variable number of int arguments, and several invocations of this method. The output is:
# of
arguments: 0
# of arguments: 1
args[0] = 1
# of arguments: 2
args[0] = 1
args[1] = 2
# of arguments: 3
args[0] = 1
args[1] = 2
args[2] = 3
# of arguments: 4
args[0] = 1
args[1] = 2
args[2] = 3
args[3] = 4
Most of the examples presented in this introduction use the WriteLine method of the Console class. The argument substitution behavior of this method, as exhibited in the example
int a =
1, b = 2;
Console.WriteLine('a = , b = ', a, b);
is accomplished using a parameter array. The WriteLine method provides several overloaded methods for the common cases in which a small number of arguments are passed, and one method that uses a parameter array.
namespace
System
public static void WriteLine(string s, object a)
public static void WriteLine(string s, object a, object b)
public static void WriteLine(string
s, params object[] args)
}
}
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 963
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved