class StrIndex
{
public Hashtable studentList=new Hashtable(); public int this[string name]
{
get
{
return (int)studentList[name];
} set
{
studentList[name]=value;
}
}
}class Test
{
static void Main()
{
StrIndex objIndex=new StrIndex();
objIndex["Sam"]=232676; //这句是不是相当于studentList["Sam"]=232676;
}
}
但为什么以下程序就出错?
class Test
{
Hashtable studentList=new Hashtable();
studentList["Sam"]=232676; //出错
}
{
public Hashtable studentList=new Hashtable(); public int this[string name]
{
get
{
return (int)studentList[name];
} set
{
studentList[name]=value;
}
}
}class Test
{
static void Main()
{
StrIndex objIndex=new StrIndex();
objIndex["Sam"]=232676; //这句是不是相当于studentList["Sam"]=232676;
}
}
但为什么以下程序就出错?
class Test
{
Hashtable studentList=new Hashtable();
studentList["Sam"]=232676; //出错
}
解决方案 »
- Try...Catch...Invoke异常捕捉无效?
- 求问 winform中嵌入Autodesk Express Viewer显示dwf问题
- c#中keypress事件判断是否按了退格键我下面的代码错在哪里?另外如何判断是否按了回车键
- C#编程 发送midi时间码(MTC)
- C#传给C++写的DLL参数需要手动释放资源吗?
- IE浏览器是怎么复制和全选文字的?
- 父窗体加的控件,如button、Datagridview,我要它们全部显示在子窗体的下面!麻烦看到贴子的哥哥姐姐叔叔阿姨解决一下!谢谢!
- 什么时候服务进程的类型会是托管?
- 请问怎么把ArrayList的数据放到缓存中再取出来
- c#中怎么使用tts语音实现文本到语音
- 小儿科问题——关于C#的安装制作,这个开发工具成熟有保障吗?
- 向页面post数据的问题.急
{
Hashtable studentList=new Hashtable();
studentList["Sam"]=232676; //出错
}
换成:
class Test
{
Hashtable studentList=new Hashtable();
//studentList["Sam"]=232676; //出错studentList.add("Sam",232676)
}
原因:因为new得到的studentList里面没有key ,需要自己添加
class StrIndex
{
public Hashtable studentList=new Hashtable(); public int this[string name]
{
get
{
return (int)studentList[name];
} set
{
studentList[name]=value;
}
}
}class Test
{
static void Main()
{
StrIndex objIndex=new StrIndex();
objIndex["Sam"]=232676; //这句是不是相当于studentList["Sam"]=232676;
}
}
这样的语句只能出现在方法里面,否则通不过语法检查
相当正确。
因为你用的是hashtable
一般来说,C语系的语法中存在有声明这个概念。声明是以类型开头的语句,如int i;、string s;long l,m,n;这些都是变量的声明,还有函数声明,如:void Function ()
不过,为了省事,C++规定可以在声明的时候进行赋值,所赋的值可以是任何表达式。
int i = 10;在C#中,class后面的花括号中只能包含声明而不能包含语句。
并且,在声明中可以赋值,但有一些要求。如表达式不能依赖于另一个声明,如下不合法:
private int i;
private int j = i;很显然的:
Hashtable studentList=new Hashtable();//这是带赋值的声明
studentList["Sam"]=232676; //这是语句,不能出现在类定义里面,即使这不违反语法,也违反不能依赖另一个声明的规则。
这都是C#的基本语法。
声明语法在函数体内也被称作定义。