写法不正确吧 interface myClass<T> where T : class { T this[int index] { get; set; } } 完全可以啊
不一定要索引器吧,这货看起来好看而已 public object get(object index);也行嘛
我是想自己实现一下串的各种操作,代码太长,什么类啦方法的一大堆,捡主要的贴吧。 //接口: 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,因为这里没有定义方法。
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; } }
interface myClass<T> where T : class
{
T this[int index] { get; set; }
}
完全可以啊
public object get(object index);也行嘛
//接口:
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,因为这里没有定义方法。
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; }
}
char this[int index] { get; set; }
之后调用的程序中就不会报错了。