源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中方括号[]的语法及作用介绍

  • 时间:2022-05-20 09:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中方括号[]的语法及作用介绍
1. 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对象进行操作。 需要注意的是,在调用COM组件之前,我们需要在.NET程序中引用名称空间:System.Runtime.InteropServices 。因为我们需要使用这个名称空间所提供的一个方法:DllImport。 例子: 内存,硬盘的利用率
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Windows.Help { public partial class SystemInfo : Form { public SystemInfo() { InitializeComponent(); } [DllImport("kernel32")] public static extern void GetWindowsDirectory(StringBuilder WinDir, int count); [DllImport("kernel32")] public static extern void GetSystemDirectory(StringBuilder SysDir, int count); [DllImport("kernel32")] public static extern void GetSystemInfo(ref CPU_INFO cpuinfo); [DllImport("kernel32")] public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); [DllImport("kernel32")] public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo); //定义CPU的信息结构 [StructLayout(LayoutKind.Sequential)] public struct CPU_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } //定义内存的信息结构 [StructLayout(LayoutKind.Sequential)] public struct MEMORY_INFO { public uint dwLength; public uint dwMemoryLoad; public uint dwTotalPhys; public uint dwAvailPhys; public uint dwTotalPageFile; public uint dwAvailPageFile; public uint dwTotalVirtual; public uint dwAvailVirtual; } //定义系统时间的信息结构 [StructLayout(LayoutKind.Sequential)] public struct SYSTEMTIME_INFO { public ushort wYear; public ushort wMonth; public ushort wDayOfWeek; public ushort wDay; public ushort wHour; public ushort wMinute; public ushort wSecond; public ushort wMilliseconds; } private void button1_Click(object sender, EventArgs e) { //调用GetWindowsDirectory和GetSystemDirectory函数分别取得Windows路径和系统路径 const int nChars = 128; StringBuilder Buff = new StringBuilder(nChars); GetWindowsDirectory(Buff, nChars); WindowsDirectory.Text = "Windows路径:" + Buff.ToString(); GetSystemDirectory(Buff, nChars); SystemDirectory.Text = " 系统路径:" + Buff.ToString(); //调用GetSystemInfo函数获取CPU的相关信息 CPU_INFO CpuInfo; CpuInfo = new CPU_INFO(); GetSystemInfo(ref CpuInfo); NumberOfProcessors.Text = "本计算机中有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU"; ProcessorType.Text = "CPU的类型为" + CpuInfo.dwProcessorType.ToString(); ProcessorLevel.Text = "CPU等级为" + CpuInfo.dwProcessorLevel.ToString(); OemId.Text = "CPU的OEM ID为" + CpuInfo.dwOemId.ToString(); PageSize.Text = "CPU中的页面大小为" + CpuInfo.dwPageSize.ToString(); //调用GlobalMemoryStatus函数获取内存的相关信息 MEMORY_INFO MemInfo; MemInfo = new MEMORY_INFO(); GlobalMemoryStatus(ref MemInfo); MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用"; TotalPhys.Text = "物理内存共有" + MemInfo.dwTotalPhys.ToString() + "字节"; AvailPhys.Text = "可使用的物理内存有" + MemInfo.dwAvailPhys.ToString() + "字节"; TotalPageFile.Text = "交换文件总大小为" + MemInfo.dwTotalPageFile.ToString() + "字节"; AvailPageFile.Text = "尚可交换文件大小为" + MemInfo.dwAvailPageFile.ToString() + "字节"; TotalVirtual.Text = "总虚拟内存有" + MemInfo.dwTotalVirtual.ToString() + "字节"; AvailVirtual.Text = "未用虚拟内存有" + MemInfo.dwAvailVirtual.ToString() + "字节"; //调用GetSystemTime函数获取系统时间信息 SYSTEMTIME_INFO StInfo; StInfo = new SYSTEMTIME_INFO(); GetSystemTime(ref StInfo); Date.Text = StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日"; Time.Text = (StInfo.wHour + 8).ToString() + "点" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒"; } private void button2_Click(object sender, EventArgs e) { this.Close(); } } }
2. 数组、索引器中的应用 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 3. 方括号用于指定属性 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}是你定义的
[u]复制代码[/u] 代码如下:
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)]
这些是类或方法的属性 这个在大型的软件开发中是很有用的,如项目中要用到的一个模块是通用的,我们就可以将其单独抽出来做成控件,这个时候类或是方法的属性就有用了 加上这些后使控件类在使用的时候就会有相应的列项提示等等
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部