C# 在静态void函数C中传递参数#

C# 在静态void函数C中传递参数#,c#,function,void,C#,Function,Void,我试图编写一个C#函数来确定数组中的最大值并通过引用传递它 这是我第一次用C#编程,但主要是我似乎不能正确地分配它,这真的让我很烦恼 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication4 { class Program { st

我试图编写一个C#函数来确定数组中的最大值并通过引用传递它

这是我第一次用C#编程,但主要是我似乎不能正确地分配它,这真的让我很烦恼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication4
{
    class Program
    {
        static void Maxim(int n, ref int maxim, params int[] v) {
            int i,  max=v[0];

            for (i = 0; i < n; i++) {
                if (v[i] >  max)  max = v[i];
            }
        }

        static void Main()
        {
            int[] vector = new int[10];
            int n, i;
            int maximul;

            Console.WriteLine("Introduceti numarul de elemente: ");
            n = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Valoarea introdusa: {0}", n);
            for (i = 0; i < n; i++) {
                vector[i] = Int32.Parse(Console.ReadLine());
            }

            Console.WriteLine("Elementele introduse sunt: ");
            for (i = 0; i < n; i++) {
                Console.WriteLine("Elementul {0}:  {1}", i + 1, vector[i]);
            }

            Maxim(n, ref maximul, vector);

            Console.WriteLine("Maximul din vector: {0}",  maximul);
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台应用程序4
{
班级计划
{
静态无效最大值(int n,ref int max,params int[]v){
int i,max=v[0];
对于(i=0;imax)max=v[i];
}
}
静态void Main()
{
int[]向量=新的int[10];
int n,i;
int最大值;
Console.WriteLine(“元素介绍:”);
n=Int32.Parse(Console.ReadLine());
Console.WriteLine(“valoareaintrousa:{0}”,n);
对于(i=0;i

它返回以下错误:
使用未分配的局部变量

在定义变量时初始化变量:

int n = 0, i = 0;
int maximul = 0;
原因可能是您正在将
maximul
作为ref参数传递,但您没有初始化它

发件人:

传递给ref参数的参数必须在传递前进行初始化。这与out参数不同,out参数的参数在传递之前不必显式初始化


定义变量时初始化变量:

int n = 0, i = 0;
int maximul = 0;
原因可能是您正在将
maximul
作为ref参数传递,但您没有初始化它

发件人:

传递给ref参数的参数必须在传递前进行初始化。这与out参数不同,out参数的参数在传递之前不必显式初始化


定义变量时初始化变量:

int n = 0, i = 0;
int maximul = 0;
原因可能是您正在将
maximul
作为ref参数传递,但您没有初始化它

发件人:

传递给ref参数的参数必须在传递前进行初始化。这与out参数不同,out参数的参数在传递之前不必显式初始化


定义变量时初始化变量:

int n = 0, i = 0;
int maximul = 0;
原因可能是您正在将
maximul
作为ref参数传递,但您没有初始化它

发件人:

传递给ref参数的参数必须在传递前进行初始化。这与out参数不同,out参数的参数在传递之前不必显式初始化


Maxim是一个冗余变量。你永远不会在你的函数中使用它

Maxim是一个冗余变量。你永远不会在你的函数中使用它

Maxim是一个冗余变量。你永远不会在你的函数中使用它

Maxim是一个冗余变量。你永远不会在你的函数中使用它

问题是最大值存储在本地
max
中,但调用方希望将其写入
ref
参数
maxim
。如果删除本地
max
并改用
maxim
,这将解决问题

编写此函数的一种更惯用的方法是根本不使用
ref
参数。而是直接返回值

static intMaxim(int n, params int[] v) {
  int i,  max=v[0];
  for (i = 0; i < n; i++) {
    if (v[i] >  max)  max = v[i];
  }
  return max;
}
static intMaxim(int n,参数int[]v){
int i,max=v[0];
对于(i=0;imax)max=v[i];
}
返回最大值;
}

请注意,
n
参数在这里也不是真正需要的。数组
v
的长度可以通过表达式
v.length

访问。问题是最大值存储在本地
max
中,但调用者希望将其写入
ref
参数
maxim
。如果删除本地
max
并改用
maxim
,这将解决问题

编写此函数的一种更惯用的方法是根本不使用
ref
参数。而是直接返回值

static intMaxim(int n, params int[] v) {
  int i,  max=v[0];
  for (i = 0; i < n; i++) {
    if (v[i] >  max)  max = v[i];
  }
  return max;
}
static intMaxim(int n,参数int[]v){
int i,max=v[0];
对于(i=0;imax)max=v[i];
}
返回最大值;
}

请注意,
n
参数在这里也不是真正需要的。数组
v
的长度可以通过表达式
v.length

访问。问题是最大值存储在本地
max
中,但调用者希望将其写入
ref
参数
maxim
。如果删除本地
max
并改用
maxim
,这将解决问题

编写此函数的一种更惯用的方法是根本不使用
ref
参数。而是直接返回值

static intMaxim(int n, params int[] v) {
  int i,  max=v[0];
  for (i = 0; i < n; i++) {
    if (v[i] >  max)  max = v[i];
  }
  return max;
}
static intMaxim(int n,参数int[]v){
int i,max=v[0];
对于(i=0;imax)max=v[i];
}
返回最大值;
}

请注意,
n
参数在这里也不是真正需要的。数组
v
的长度可以通过表达式
v.length

访问。问题是最大值为