índice
Esta seção apresenta funções
função
definição
static <returnType> <functionName>(<paramType> <paramName>,...)
{
......
return returnValue;
}
esp: A função que executa uma linha de código pode usar uma função introduzida em C # 6, o método do corpo da expressão é usado para realizá-la, use =>
static <returnType> <functionName>() => x*y
//等价
static <returnType> <functionName>(x,y)
{
return x*y;
}
Matriz de parâmetros
A matriz de parâmetros é um parâmetro especial. No final do parâmetro de definição da função, um número indefinido de parâmetros é permitido para chamar a função. Use a palavra-chave params para definir
static <returnType> <functionName>(<p1Type> <p1Name>,...,params <type>[] <name>)
{
...
return <returnValue>;
}
//调用
<functionName>(<p1>,...,<val1>,<val2>,...)
//eg
static int sumVals(params int[] data)
{
int sum = 0;
foreach (int val in data)
sum += val;
return sum;
}
static void main(string[] args)
{
int sum = sumVals(1,2,3,4,5);
Console.Write(sum);
return 0;
}
Deve-se notar que <val1>, <val2>, etc. são todos valores do tipo type, que são usados para inicializar o array de nomes. O número de parâmetros que podem ser especificados não é limitado, mas devem ser do tipo <tipo>
Parâmetro de referência
Normalmente, os parâmetros passados são passados por valor e não afetarão a variável original. Mas se você quiser modificar os parâmetros passados através da função, uma maneira é passar por referência, use a palavra-chave ref para especificar os parâmetros
static <returnType> <functionName>(ref <type> <val>)
Nota:
- A passagem por referência só pode passar variáveis
- A variável referenciada deve ser inicializada, C # não permite supor que o parâmetro ref seja inicializado na função que o utiliza
- Além de especificar o nome da variável, passe o parâmetro de referência com ref
Parâmetros de saída
Para alterar o valor do parâmetro, além de passar por referência, você também pode usar a palavra-chave out. O parâmetro especificado retornará o valor para a variável na chamada de função após a execução da função.
static <returnType> <functionName>(out <type> <val>)
//eg:调用
sum(out int[] data)
Nota:
- Atribuir uma variável não atribuída ao parâmetro ref é ilegal, mas pode ser atribuída ao parâmetro out
- Ao usar o parâmetro out, ele deve ser considerado como uma variável não atribuída, o que é equivalente à reinicialização na função
- Os parâmetros de passagem precisam usar a palavra-chave out
Sobrecarga de função
A sobrecarga de funções permite a criação de várias funções com o mesmo nome, e cada função pode usar diferentes tipos de parâmetros. Desta forma, não é necessário especificar explicitamente qual função usar, e a função correspondente pode ser executada de acordo com o tipo de parâmetro usado. É importante notar que você não pode definir duas funções com o mesmo nome que retornam apenas valores diferentes.
static void f(out int v)
{
v = 0;
Console.Write($"v1{v}\n");
}
static void f(ref double v)
{
v = 1;
Console.Write($"v2{v}\n");
}
static void Main(string[] args)
{
//调用哪个函数看参数类型
//int sum = 5;
double sum = 10.0;
f(ref sum);
Console.Write(sum);
}