应该是个很常见的问题,试着写了一个,当然是通不过的啦:
        public static object add_member(object[] group, object member)
        {
            bool flag = false;
            for (int n = 0; n < group.Length; n++)
            {
                if (group[n] == member)
                {
                    flag = true;
                    break;
                }
            }
            if (flag == false)
            {
                group[group.Length] = member;            }                return group;
        }        static void Main(string[] args)
        {
            int[] test_array = new int[10];
            
            add_member(test_array, 1);
            int n=1;
            foreach (int im in test_array)
            {
                Console.WriteLine(im);
                n++;
            }
        } 错误 1 与“exam_delegate.Program.add_member(object[], object)”最匹配的重载方法具有一些无效参数 错误 2 参数“1”: 无法从“int[]”转换为“object[]” 比较那部分,如果不能直接用==,似乎可以用委托来实现。能不能帮我改改?

解决方案 »

  1.   

    》》为什么不用集合?因为数组方便啊
    而且这个问题经常遇到,不管是string 还是 int 或者其他类型
      

  2.   

    if (flag == false)
                {
                    group[group.Length] = member;            }   ///这句话有严重问题
      

  3.   

    数组 引用类型 
    int 数组里面的每个元素 值类型你把引用类型赋值到值类型 不行<----------如tautaulee所说
      

  4.   


    ArrayList (1.1版)
    List<T> (2.0版)
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace TestValueTypeReferenceType
    {
        class Program
        {
            static void Main(string[] args)
            {
                object[] myGroup = new object[10];            object[] myGroupReference = AddMember(myGroup, 8);            foreach (int n in myGroupReference)
                {
                    Console.WriteLine(n.ToString());
                }            Console.ReadLine();
            }        public static object[] AddMember(object[] group, int member)
            {
                for (int i = 0; i < group.Length; i++)
                {
                    group[i] = member;
                }            return group;
            }
        }
    }编译通过
      

  6.   

    楼上的例子没有看的很明白。似乎是把我的意思误解了,那个AddMember(object[] group, int member)
    肯定不是我想要的,我是想不确定类型的某个数组,而不只是int的。如果我能确定类型,何必这么麻烦。都说了是初学,概念肯定不是很清晰,别嘲笑我。
      

  7.   

    这个命题本来就不成立。譬如说object数组、enum数组(且已填满)、存放了不同类型元素的数组、存放了不可比较类型(如抽象基类、接口),或者存放没有比较意义的封闭类型,如HttpContext,又或者存放的类型对象根本就不能由你来创建,如HttpContext,的数组
      

  8.   

    你自己试一下啊AddMember(object[] group, object member)同样可以编译通过。
      

  9.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace TestValueTypeReferenceType
    {
        class Program
        {
            static void Main(string[] args)
            {
                object[] myGroup = new object[10];            object[] myGroupReference = AddMember(myGroup, new TestClass());            foreach (object n in myGroupReference)
                {
                    Console.WriteLine(n.ToString());
                }            Console.ReadLine();
            }        public static object[] AddMember(object[] group, object member)
            {
                for (int i = 0; i < group.Length; i++)
                {
                    group[i] = member;
                }            return group;
            }
        }    class TestClass
        {
            public override string ToString()
            {
                string str = "This is an object.";
                return str.ToString();
            }
        }
    }
      

  10.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace TestValueTypeReferenceType
    {
        class Program
        {
            static void Main(string[] args)
            {
                object[] myGroup = new object[10];            //object[] myGroupReference = AddMember(myGroup, new TestClass());            foreach (object n in AddMember(myGroup, new TestClass(), 8))
                {
                    Console.WriteLine(n.ToString());
                }            Console.ReadLine();
            }        public static object[] AddMember(object[] group, object member1, int member2)
            {
                for (int i = 0; i < group.Length/2; i++)
                {
                    group[i] = member1;
                }            for (int i = 5; i < group.Length; i++)
                {
                    group[i] = member2;
                }            return group;
            }
        }    class TestClass
        {
            public override string ToString()
            {
                string str = "This is an object.";
                return str.ToString();
            }
        }
    }
      

  11.   

    楼主其实希望做到的是对一个方法传递2个参数,其中一个是数组,另外一个是一个对象,如果这个对象在数组中部存在就添加进数组里,如果存在则不管,直接原样返回。用 List<T>  代替你的数组会更好,参数用 (List<T> group,T member).