亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中方括號[]的語法及作用介紹

2020-01-24 03:24:09
字體:
來源:轉載
供稿:網友

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。

例子: 內存,硬盤的利用率

復制代碼 代碼如下:

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}是你定義的

復制代碼 代碼如下:

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)]

這些是類或方法的屬性
這個在大型的軟件開發中是很有用的,如項目中要用到的一個模塊是通用的,我們就可以將其單獨抽出來做成控件,這個時候類或是方法的屬性就有用了
加上這些后使控件類在使用的時候就會有相應的列項提示等等

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人性色生活仑片| 亚洲精品国产综合久久| 美女少妇精品视频| 欧美日韩一区二区免费视频| 亚洲深夜福利网站| 亚洲精品永久免费| 欧美精品在线视频观看| 国产日韩在线观看av| 亚洲天堂精品在线| 国产在线观看一区二区三区| 亚洲女在线观看| 精品久久久91| 国产精品18久久久久久首页狼| 欧美性猛交xxxx乱大交蜜桃| 欧美激情视频在线观看| 日韩中文字幕第一页| 久久久欧美精品| 日韩av色在线| 日韩精品在线视频观看| 成人黄色片网站| 亚洲精品国产电影| 中文字幕精品在线| 亚洲色图色老头| 亚洲国产天堂久久综合网| 久久久人成影片一区二区三区观看| 亚洲视频在线播放| 欧洲成人免费aa| 97精品国产97久久久久久| 中文字幕欧美日韩精品| 91在线高清免费观看| 国产欧美久久一区二区| 亚洲美女中文字幕| 成人淫片在线看| 国产亚洲xxx| 成人黄色中文字幕| 日本一区二区不卡| 日韩精品中文字幕视频在线| 国产精品一区二区三区久久久| 久久精品影视伊人网| 日韩在线观看免费全集电视剧网站| 国产v综合ⅴ日韩v欧美大片| 一区二区成人av| 亚洲国产中文字幕久久网| 成人黄色av播放免费| 国产精品白丝jk喷水视频一区| 国产91ⅴ在线精品免费观看| 亚洲精品一区av在线播放| 日韩中文字幕免费视频| 91国偷自产一区二区三区的观看方式| 爽爽爽爽爽爽爽成人免费观看| 亚洲欧美另类国产| 欧美成人全部免费| 欧美性视频网站| 91日本视频在线| 日韩欧美黄色动漫| 亚洲天堂免费在线| 亚洲国产天堂久久综合网| 欧洲成人免费视频| 国产日韩在线看片| 高清欧美性猛交xxxx| 国产97在线视频| 亚洲高清不卡av| 91在线视频导航| 91久久国产精品| 2024亚洲男人天堂| 久久精品美女视频网站| 中文字幕日韩精品有码视频| 亚洲国产成人精品一区二区| 欧洲亚洲女同hd| 亚洲精品天天看| 丝袜亚洲欧美日韩综合| 亚洲黄色av女优在线观看| 992tv成人免费视频| 综合激情国产一区| 原创国产精品91| 亚洲黄页网在线观看| 国产欧美日韩中文| 午夜精品久久久99热福利| 狠狠爱在线视频一区| 午夜精品一区二区三区在线视| 国产精品免费久久久| 在线观看不卡av| 91精品久久久久久久久久另类| 久久久久久欧美| 亚洲日韩欧美视频一区| 欧美成人精品激情在线观看| 久久久综合免费视频| 欧美另类高清videos| 国产成人久久久精品一区| 亚洲国产精品yw在线观看| 在线观看视频99| 午夜欧美大片免费观看| 91九色单男在线观看| 欧美激情aaaa| 日韩成人在线视频观看| 国产精品99久久久久久白浆小说| 精品亚洲aⅴ在线观看| 日本成人免费在线| 国自产精品手机在线观看视频| 日韩一区二区久久久| 亚洲一区二区在线播放| 国产精品老女人精品视频| 日韩综合视频在线观看| 欧美精品激情在线观看| 欧美激情亚洲国产| 97在线免费观看| 久久视频国产精品免费视频在线| 久久久久久久久爱| 91chinesevideo永久地址| 在线播放日韩专区| 亚洲激情电影中文字幕| 欧美日韩精品在线视频| 国产精品444| 国产成人精品免高潮费视频| 国产亚洲a∨片在线观看| 在线视频欧美日韩精品| 久久久免费观看视频| 精品夜色国产国偷在线| 亚洲精品国产综合区久久久久久久| 久久久电影免费观看完整版| 国产精品免费一区豆花| 国内精品久久久久久中文字幕| 国产欧美日韩丝袜精品一区| 精品国产1区2区| 韩曰欧美视频免费观看| 欧美精品免费在线| 久久在线免费观看视频| 亚洲久久久久久久久久久| 久久成人一区二区| 国外日韩电影在线观看| 亚洲国产精品热久久| 国产91精品久久久久久| 777精品视频| 91精品久久久久久| 欧美做爰性生交视频| 91精品国产自产在线| 日韩精品在线影院| 国产精品成人免费电影| 成人在线视频网站| 成人福利视频网| 欧美在线一级va免费观看| 亚洲人成网站999久久久综合| 在线观看免费高清视频97| 国产福利精品av综合导导航| 91av在线免费观看| 精品爽片免费看久久| 亚洲第一网中文字幕| 中文字幕亚洲二区| 国产精品极品尤物在线观看| 国产精品久久久久久久美男| 98视频在线噜噜噜国产| 91精品久久久久久久久久另类| 欧美最顶级丰满的aⅴ艳星| 亚洲精品欧美一区二区三区| 91欧美激情另类亚洲| 亚洲天堂影视av| 亚洲国产精彩中文乱码av在线播放| 亚洲国产日韩欧美在线99| 久久精品国产欧美亚洲人人爽| 欧美日韩国产一区在线| 亚洲欧美激情精品一区二区| 欧美激情a∨在线视频播放| 在线观看日韩av| 操日韩av在线电影|