C#中 "[]"的作用

bwguang 2009-11-06 07:54:29
C#2.0中方括号 "[]"都有几种用处?哪位给解答下?
我已经知道的:
1) int i[10]; 代表数组
2) [Attribute]属性
3) [Web Method] 我感觉也算是属性吧,表示web方法。
还有那种用途?
大家看一下的代码,是一个类下的变量声明

//变量
[XmlArray(IsNullable = true)]
[XmlArrayItem(typeof(bool)),
XmlArrayItem(typeof(char)),
XmlArrayItem(typeof(string)),
XmlArrayItem(typeof(byte)),
XmlArrayItem(typeof(byte[])),
.....
XmlArrayItem(typeof(XmlDocument))]

这种声明变量的方式头一次见,谁能给个详细的解释?这种声明方式有什么好处?
...全文
249 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelan1748 2009-11-06
  • 打赏
  • 举报
回复
索引,特性,没想到别的
hhj530 2009-11-06
  • 打赏
  • 举报
回复
dictionary的key
zxforben111 2009-11-06
  • 打赏
  • 举报
回复
应该是索引器,就是带参属性
ziminyang 2009-11-06
  • 打赏
  • 举报
回复
任何类都可定义自己的[]

定义
public int this[int idx]
{
get { return idx + 1; }
}

使用
Console.WriteLine(this[20]);
yuanhuiqiao 2009-11-06
  • 打赏
  • 举报
回复
楼上认真
满衣兄 2009-11-06
  • 打赏
  • 举报
回复
C# 语言参考
[] 运算符(C# 参考)

方括号 ([]) 用于数组、索引器和属性,也可用于指针。

备注
数组类型是一种后跟 [] 的类型:

复制代码
int[] fib; // fib is of type int[], "array of int"
fib = new int[100]; // create a 100-element int array
若要访问数组的一个元素,则用方括号括起所需元素的索引:

复制代码
fib[0] = fib[1] = 1;
for( int i=2; i<100; ++i ) fib[i] = fib[i-1] + fib[i-2];
如果数组索引超出范围,则会引发异常。

不能重载数组索引运算符;但类型可以定义采用一个或多个参数的索引器和属性。索引器参数括在方括号中(就像数组索引一样),但索引器参数可声明为任何类型(这与数组索引不同,数组索引必须为整数)。

例如,.NET Framework 定义 Hashtable 类型,该类型将键和任意类型的值关联在一起。

复制代码
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index
方括号还用于指定属性(C# 编程指南):

复制代码
[attribute(AllowMultiple=true)]
public class Attr
{
}
可以使用方括号来指定指针索引:

复制代码
unsafe fixed ( int* p = fib ) // p points to fib from earlier example
{
p[0] = p[1] = 1;
for( int i=2; i<100; ++i ) p[i] = p[i-1] + p[i-2];
}
不执行边界检查。

C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:

1.6.6.5 运算符

7.2 运算符

http://msdn.microsoft.com/zh-cn/library/a3hd7ste(VS.80).aspx
lovexilove 2009-11-06
  • 打赏
  • 举报
回复
1) int i[10]; 代表数组
你这是那门子的数组啊?求教
laomeng520 2009-11-06
  • 打赏
  • 举报
回复
key value
mohugomohu 2009-11-06
  • 打赏
  • 举报
回复
4)索引器
liherun 2009-11-06
  • 打赏
  • 举报
回复
书上哪地方有讲啊?
angel6709 2009-11-06
  • 打赏
  • 举报
回复
dictionary的key
rqx110 2009-11-06
  • 打赏
  • 举报
回复
不是声明变量啊,是Attribute。建议去翻翻书

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧