注: このプログラムから無関係なコードをすべて削除しました。
1 つのプロジェクト内に複数の CS ファイルがあります。私はこのプロジェクトをほぼ完了しましたが、最大値(および最小値ですが、これと同じになるため、それを取り出しました)に対して、void を返します(「return」の下に赤い波線が表示されます)。オブジェクトを正しく初期化しているように感じますが、そうではないようです。1 つの CS ファイルに値がハードコードされた配列があります。
static void Main(string[] args)
{
UnorderedArrayList<int> u = new UnorderedArrayList<int>();
Console.WriteLine("This is the original list");
u.print();
int var = 5;
u.insert(ref var);
var = 12;
u.insert(ref var);
var = 2;
u.insert(ref var);
var = 29;
u.insert(ref var);
var = 40;
u.insert(ref var);
var = 5;
u.insert(ref var);
var = 58;
u.insert(ref var);
u.print();
var = 5;
Console.WriteLine("********");
Console.WriteLine("Max Number:");
u.returnMax(ref var);
u.print();
}
そして、別の CS ファイルには次のメソッドがあります。
public override void insert(ref T item)
{
list[next] = item;
next++;
}
public override void returnMax(ref T item)
{
dynamic max = list[0];
for (int i = 0; i < list.Count() - 1; i++)
{
if (list[i] > max)
max = list[i];
}
return max;
さらに、もう 1 つの CS ファイルには、抽象メソッドがあります。
public abstract class ArrayList<T>
{
protected T[] list;
protected int next;
public ArrayList()
{
list = new T[100];
next = 0;
}
public abstract void returnMax(ref T item);
public void print()
{
for (int i = 0; i < next; i++)
{
Console.WriteLine(list[i]);
}
}
私がまったく問題を抱えている唯一の部分は、2番目の部分の「最大値を返す」です。これは、nullを返すためです。明らかに、オブジェクト「max」を正しく初期化していません。どんな助けでも大歓迎です。私は自分が何を間違っているのかを本当に理解したいと思っています。