在继承接口的类里写了索引器,一运行它就这样提示。
后来曾尝试在接口里弄个索引器,但又不允许。咋办呢?

解决方案 »

  1.   

    写法不正确吧
    interface myClass<T> where T : class
    {
        T this[int index] { get; set; }
    }
    完全可以啊
      

  2.   

    不一定要索引器吧,这货看起来好看而已
    public object get(object index);也行嘛
      

  3.   

    我是想自己实现一下串的各种操作,代码太长,什么类啦方法的一大堆,捡主要的贴吧。
    //接口:
    using System;namespace theString
    {
        interface IString<T>
        {
            int GetLength();
            int Compare(T str);
            T SubString(int index, int len);
            T Connect(T str);
            int IndexOf(T str, int startpos);
            T Insert(int index, T str);
            T Delete(int index, int len);
        }
    }
    //类:
    class SeqString : IString<SeqString>
        {
            private char[] data;
            private int length;
            public char this[int index]
            {
                get { return data[index]; }
                set { data[index] = value; }
            }
            public int GetLength()
            {
                return this.length;
            }
            public SeqString(int size)
            {
                data = new char[size];
                length = 0;
            }
            public SeqString(SeqString str)
            {
                length = str.GetLength();
                data = new char[str.GetLength()];
                for (int i = 0; i < str.GetLength(); i++)
                {
                    data[i] = str[i];
                }
            }
            public SeqString(char[] cha)
            {
                data = new char[cha.Length];
                length = cha.Length;
                for (int i = 0; i < cha.Length; i++)
                {
                    data[i] = cha[i];
                }
            }          
                ******* // 此部分为接口的各种方法……略,保证其中没错误,以及接口的方法都实现了。
        }  
    //测试程序:
     static void Main(string[] args)
            {
                Random rnd = new Random();
                IString<SeqString> myseqstring1 = new SeqString(1024);//自己已经写好了的构造函数           
                char[] ch = new char[256];
                for (int i = 0; i < ch.Length; i++)
                {
                    ch[i] = (char)(rnd.Next(8, 127));
                }
                myseqstring1 = new SeqString(ch);    //同样是写好了的构造函数
                 for (int i = 0; i < myseqstring1.GetLength(); i++)
                    Console.Write(myseqstring1[i] + " ");//在这里就出状况!!
                Console.WriteLine("\n\n");
                Console.ReadKey();
            }   大家可以把接口的方法注释了,照这个去copy下看看后果。先把myseqstring1.GetLength()写成256,因为这里没有定义方法。
      

  4.   


        interface IString<T>
        {
            int GetLength();
            int Compare(T str);
            T SubString(int index, int len);
            T Connect(T str);
            int IndexOf(T str, int startpos);
            T Insert(int index, T str);
            T Delete(int index, int len);
            char this[int index] { get; set; }
        }
      

  5.   

    应该在interface中定义索引:
      char this[int index] { get; set; }
    之后调用的程序中就不会报错了。