【发布时间】:2013-09-26 00:39:18
【问题描述】:
注意:我已经从这个程序中删除了所有不相关的代码。
我在一个项目中有多个 CS 文件。我几乎完成了这个项目,但是对于我的最大值(和最小值,但我把它拿出来,因为它会和这个一样),它返回 void(我在“return”下得到红色曲线)。我觉得我正在正确初始化我的对象,但显然我没有。我在一个 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;
此外,在另外一个 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]);
}
}
我唯一有任何问题的部分是第二部分中的“返回最大值”,因为它返回 null。显然,我没有正确初始化对象“max”。任何帮助将不胜感激。我真的很想知道我做错了什么,因为它让我发疯!
【问题讨论】:
-
不是整个
u.Insert(ref var);的一部分有味道吗?如果您在 C# 中复制/粘贴代码,很有可能您做错了某事。 -
我真的不知道你在说什么。我不是在复制和粘贴代码。这只是整个项目的一小部分。那么,你在暗示它“闻起来像什么”,只是为了让我们清楚?
-
吞咽。误读您的代码,对不起。为什么不直接内联初始化该数组?
-
不用担心。当谈到 C# 时,我仍然是一个相当大的新手。介意我问你所说的“内联初始化”是什么意思?这可能就是我正在寻找的。span>
-
这如何返回任何东西...?它被标记为
void.. 你能给我们正确的代码吗?