c# 方括号代表什么
来源:百度文库 编辑:神马文学网 时间:2024/10/03 02:47:24
C# 程序员参考
方括号 ([]) 用于数组、索引器和属性,也可用于指针。更重要的是用于外部DLL库类的引用。
C#实现.net组件和COM组件的互操作
[DllImport("kernel32.dll")]这叫引入kernel32.dll这个动态连接库。这个动态连接库里面包含了很多WindowsAPI函数,如果你想使用这面的函数,就需要这么引入。举个例子:[DllImport("kernel32.dll")]private static extern void 函数名(参数,[参数]);函数名就是一个属于kernel32.dll里的一个函数。完了你就可以用那个函数了。
.NET组件中使用目前存在的COM组件
对于.NET来讲,使用COM组件就要简单一些。..NET提供了大量的类库来方便的实现同COM的相互操作,其中很重要的一个名称空间就是:System.Runtime.InteropServices。通过这个名称空间的名字我们也可以从字面上看出,"互操作服务"。System.Runtime.InteropServices这个名称空间提供了一系列的类来对COM对象进行操作。
下面的例子中,我们来调用一下系统自带的Win32函数MessageBoxA, 这个函数位于系统的COM组件user32.dll当中,我们调用的代码如下:
using System;
using System.Runtime.InteropServices;
class Test
{
[DllImport ("user32.dll")]
public static extern int MessageBoxA( int hWnd,string strMsg,string strCaption, int nType);
public static void Main()
{
int myMsg;
myMsg =MessageBoxA(0,"Hello!" ,"test",0);
}
}
切换到命令行,运行:
C:\>csc Test.cs
编译完毕我们的C#应用程序之后,直接运行就可以看到对话框了!同样的,也可以使用这种方法来调用我们自己使用VB/VC编写的COM组件。
需要注意的是,在调用COM组件之前,我们需要在.NET程序中引用名称空间:System.Runtime.InteropServices 。因为我们需要使用这个名称空间所提供的一个方法:DllImport。
type []
array [ indexexpr ]
其中:
type
类型。
array
数组。
indexexpr
索引表达式。
备注
数组类型是一种后跟 [] 的类型:
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 定义一个哈希表类型,该类型将键和任意类型的值关联在一起。
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index
方括号还用于指定属性:
[attribute(AllowMultiple=true)]
public class Attr {
}
可使用方括号来索引指针后面的存储位置(请参见 A.2 指针类型):
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];
}
不执行边界检查。
[ToolBoxItem(false)]表示不在IDE工具箱的控件集合中显示。[ParseChildren(true)] 它是用来告诉解析器 页面声明语法中位于指定标签内的内容(子标签)是否是看作该控件的属性还是当作一个子控件的标签。true 这里true 是当作子标签的意思。ToolBoxData 的意思是当你将这个控件从tool box 中拖放到WEBFORM中时在aspx文件的 HTML代码中添加的对该控件的定义。这里的控件是 : kj_gridview{0}是控件的标记的前缀就是你托这个控件到页面上 时候他就自动添加<{0}:Div runat=server>{0}:Div>这个{0}是你定义的 1、[StandardParameter(“ProcessID“)]
2、[System.Web.Services.WebMethod(EnableSession=true)]
3、[Guid(“D301882E-46D1-4e83-BF15-67028B94A68D“)]
4、[Category(“Drp“)]
5、[DBDefineAttribute(“Banks.XML“)]
[Serializable]
6、[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]这些是类或方法的属性
这个在大型的软件开发中是很有用的,如项目中要用到的一个模块是通用的,我们就可以将其单独抽出来做成控件,这个时候类或是方法的属性就有用了
加上这些后使控件类在使用的时候就会有相应的列项提示等等int[][] myarray3 = new int [2][]
前面的2代表二维的第一维是2 即两行 最后一个中括号代表此二位数组的列数还未指定 请参见
C# 运算符 ¦ 数组 ¦ 索引器 ¦ unsafe ¦ fixed
方括号 ([]) 用于数组、索引器和属性,也可用于指针。更重要的是用于外部DLL库类的引用。
C#实现.net组件和COM组件的互操作
[DllImport("kernel32.dll")]这叫引入kernel32.dll这个动态连接库。这个动态连接库里面包含了很多WindowsAPI函数,如果你想使用这面的函数,就需要这么引入。举个例子:[DllImport("kernel32.dll")]private static extern void 函数名(参数,[参数]);函数名就是一个属于kernel32.dll里的一个函数。完了你就可以用那个函数了。
.NET组件中使用目前存在的COM组件
对于.NET来讲,使用COM组件就要简单一些。..NET提供了大量的类库来方便的实现同COM的相互操作,其中很重要的一个名称空间就是:System.Runtime.InteropServices。通过这个名称空间的名字我们也可以从字面上看出,"互操作服务"。System.Runtime.InteropServices这个名称空间提供了一系列的类来对COM对象进行操作。
下面的例子中,我们来调用一下系统自带的Win32函数MessageBoxA, 这个函数位于系统的COM组件user32.dll当中,我们调用的代码如下:
using System;
using System.Runtime.InteropServices;
class Test
{
[DllImport ("user32.dll")]
public static extern int MessageBoxA( int hWnd,string strMsg,string strCaption, int nType);
public static void Main()
{
int myMsg;
myMsg =MessageBoxA(0,"Hello!" ,"test",0);
}
}
切换到命令行,运行:
C:\>csc Test.cs
编译完毕我们的C#应用程序之后,直接运行就可以看到对话框了!同样的,也可以使用这种方法来调用我们自己使用VB/VC编写的COM组件。
需要注意的是,在调用COM组件之前,我们需要在.NET程序中引用名称空间:System.Runtime.InteropServices 。因为我们需要使用这个名称空间所提供的一个方法:DllImport。
type []
array [ indexexpr ]
其中:
type
类型。
array
数组。
indexexpr
索引表达式。
备注
数组类型是一种后跟 [] 的类型:
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 定义一个哈希表类型,该类型将键和任意类型的值关联在一起。
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index
方括号还用于指定属性:
[attribute(AllowMultiple=true)]
public class Attr {
}
可使用方括号来索引指针后面的存储位置(请参见 A.2 指针类型):
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];
}
不执行边界检查。
[ToolBoxItem(false)]表示不在IDE工具箱的控件集合中显示。[ParseChildren(true)] 它是用来告诉解析器 页面声明语法中位于指定标签内的内容(子标签)是否是看作该控件的属性还是当作一个子控件的标签。true 这里true 是当作子标签的意思。ToolBoxData 的意思是当你将这个控件从tool box 中拖放到WEBFORM中时在aspx文件的 HTML代码中添加的对该控件的定义。这里的控件是 : kj_gridview{0}是控件的标记的前缀就是你托这个控件到页面上 时候他就自动添加<{0}:Div runat=server>{0}:Div>这个{0}是你定义的 1、[StandardParameter(“ProcessID“)]
2、[System.Web.Services.WebMethod(EnableSession=true)]
3、[Guid(“D301882E-46D1-4e83-BF15-67028B94A68D“)]
4、[Category(“Drp“)]
5、[DBDefineAttribute(“Banks.XML“)]
[Serializable]
6、[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]这些是类或方法的属性
这个在大型的软件开发中是很有用的,如项目中要用到的一个模块是通用的,我们就可以将其单独抽出来做成控件,这个时候类或是方法的属性就有用了
加上这些后使控件类在使用的时候就会有相应的列项提示等等int[][] myarray3 = new int [2][]
前面的2代表二维的第一维是2 即两行 最后一个中括号代表此二位数组的列数还未指定 请参见
C# 运算符 ¦ 数组 ¦ 索引器 ¦ unsafe ¦ fixed