这个简单的C#程序哪里错了?帮我改好后再加100分 在线等

来源:百度知道 编辑:UC知道 时间:2024/09/25 06:29:32
主函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MaxMin
{
class Program
{
static void Main(string[] args)
{
int[] data = new int[5] { 3, 5, 6, 7, 9 };
IntArray intarray = new IntArray(data);
Console.WriteLine(intarray.GetMax());
}
}
}

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

namespace MaxMin
{
class DataArray<T>
{
protected T[] Data;
public DataArray(T[] data)
{
Data = data;
}
public T GetMax()
{
T temp = Data[0];
foreach (var v in Data)
{
if (Compare(temp, v))
temp = v;

楼上不要误导楼主...C#的类没有加访问修饰符,默认是internal的,在同一程序集中,internal和public没区别。

错误在这一句:abstract bool Compare(T t1, T t2);
你定义了一个抽象方法,但是没有写访问修饰符,对类成员来说,不加访问修饰符,默认是private,抽象方法是必须在子类中重写的,因此抽象方法不允许为私有。在abstract bool Compare(T t1, T t2); 前加上protected以上级别的访问修饰符就行了。

另外,看你的代码是要实现继承自DataArray的类能够排序,那么实现IComparable接口,并在接口中实现ComparaTo方法就行了。不要象你那样做。

嗯。。仔细看看,你的代码还有错,DataArray中有抽象方法,这个类必须是抽象类,所以你还得在class DataArray<T>前面加上abstract修饰符。

看看你的class
怎么前面没有public或protect 或private
可能是这个原因你试试public

把你的三个类定义前面加上public关键字