最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中方括號(hào)[]的語(yǔ)法及作用介紹

 更新時(shí)間:2013年04月28日 14:30:47   作者:  
C#中方括號(hào)[]可用于數(shù)組,索引、屬性,更重要的是用于外部DLL類庫(kù)的引用。

1. C#實(shí)現(xiàn).NET組件與COM組件的互操作

[DllImport("kernel32.dll")]這叫引入kernel32.dll這個(gè)動(dòng)態(tài)連接庫(kù)。
這個(gè)動(dòng)態(tài)連接庫(kù)里面包含了很多WindowsAPI函數(shù),如果你想使用這面的函數(shù),就需要這么引入。舉個(gè)例子:
[DllImport("kernel32.dll")]
private static extern void 函數(shù)名(參數(shù),[參數(shù)]);
函數(shù)名就是一個(gè)屬于kernel32.dll里的一個(gè)函數(shù)。完了你就可以用那個(gè)函數(shù)了。

.NET組件中使用目前存在的COM組件
對(duì)于.NET來(lái)講,使用COM組件就要簡(jiǎn)單一些。..NET提供了大量的類庫(kù)來(lái)方便的實(shí)現(xiàn)同COM的相互操作,其中很重要的一個(gè)名稱空間就是:System.Runtime.InteropServices。通過(guò)這個(gè)名稱空間的名字我們也可以從字面上看出,"互操作服務(wù)"。System.Runtime.InteropServices這個(gè)名稱空間提供了一系列的類來(lái)對(duì)COM對(duì)象進(jìn)行操作。

需要注意的是,在調(diào)用COM組件之前,我們需要在.NET程序中引用名稱空間:System.Runtime.InteropServices 。因?yàn)槲覀冃枰褂眠@個(gè)名稱空間所提供的一個(gè)方法:DllImport。

例子: 內(nèi)存,硬盤的利用率

復(fù)制代碼 代碼如下:

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的信息結(jié)構(gòu)
[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;
}
//定義內(nèi)存的信息結(jié)構(gòu)
[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;
}
//定義系統(tǒng)時(shí)間的信息結(jié)構(gòu)
[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)
{
//調(diào)用GetWindowsDirectory和GetSystemDirectory函數(shù)分別取得Windows路徑和系統(tǒng)路徑
const int nChars = 128;
StringBuilder Buff = new StringBuilder(nChars);
GetWindowsDirectory(Buff, nChars);
WindowsDirectory.Text = "Windows路徑:" + Buff.ToString();
GetSystemDirectory(Buff, nChars);
SystemDirectory.Text = " 系統(tǒng)路徑:" + Buff.ToString();
//調(diào)用GetSystemInfo函數(shù)獲取CPU的相關(guān)信息
CPU_INFO CpuInfo;
CpuInfo = new CPU_INFO();
GetSystemInfo(ref CpuInfo);
NumberOfProcessors.Text = "本計(jì)算機(jī)中有" + CpuInfo.dwNumberOfProcessors.ToString() + "個(gè)CPU";
ProcessorType.Text = "CPU的類型為" + CpuInfo.dwProcessorType.ToString();
ProcessorLevel.Text = "CPU等級(jí)為" + CpuInfo.dwProcessorLevel.ToString();
OemId.Text = "CPU的OEM ID為" + CpuInfo.dwOemId.ToString();
PageSize.Text = "CPU中的頁(yè)面大小為" + CpuInfo.dwPageSize.ToString();
//調(diào)用GlobalMemoryStatus函數(shù)獲取內(nèi)存的相關(guān)信息
MEMORY_INFO MemInfo;
MemInfo = new MEMORY_INFO();
GlobalMemoryStatus(ref MemInfo);
MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString() + "%的內(nèi)存正在使用";
TotalPhys.Text = "物理內(nèi)存共有" + MemInfo.dwTotalPhys.ToString() + "字節(jié)";
AvailPhys.Text = "可使用的物理內(nèi)存有" + MemInfo.dwAvailPhys.ToString() + "字節(jié)";
TotalPageFile.Text = "交換文件總大小為" + MemInfo.dwTotalPageFile.ToString() + "字節(jié)";
AvailPageFile.Text = "尚可交換文件大小為" + MemInfo.dwAvailPageFile.ToString() + "字節(jié)";
TotalVirtual.Text = "總虛擬內(nèi)存有" + MemInfo.dwTotalVirtual.ToString() + "字節(jié)";
AvailVirtual.Text = "未用虛擬內(nèi)存有" + MemInfo.dwAvailVirtual.ToString() + "字節(jié)";
//調(diào)用GetSystemTime函數(shù)獲取系統(tǒng)時(shí)間信息
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() + "點(diǎn)" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒";
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}


2. 數(shù)組、索引器中的應(yīng)用

type 類型。
array 數(shù)組。

indexexpr 索引表達(dá)式。
備注
數(shù)組類型是一種后跟 [] 的類型:
int[] fib; // fib is of type int[], "array of int"
fib = new int[100]; // create a 100-element int array
若要訪問(wèn)數(shù)組的一個(gè)元素,則用方括號(hào)括起所需元素的索引:
fib[0] = fib[1] = 1;
for( int i=2; i <100; ++i ) fib[i] = fib[i-1] + fib[i-2];
如果數(shù)組索引超出范圍,則會(huì)引發(fā)異常。
不能重載數(shù)組索引運(yùn)算符;但類型可以定義包含一個(gè)或多個(gè)參數(shù)的索引器和屬性。索引器參數(shù)括在方括號(hào)中(就像數(shù)組索引一樣),但索引器參數(shù)可聲明為任何類型(與數(shù)組索引不同,數(shù)組索引必須為整數(shù))。
例如,.NET Framework 定義一個(gè)哈希表類型,該類型將鍵和任意類型的值關(guān)聯(lián)在一起。
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index

3. 方括號(hào)用于指定屬性

attribute(AllowMultiple=true)]
public class Attr {
}
可使用方括號(hào)來(lái)索引指針后面的存儲(chǔ)位置(請(qǐng)參見(jiàn) 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];
}
不執(zhí)行邊界檢查。
[ToolBoxItem(false)]表示不在IDE工具箱的控件集合中顯示。

[ParseChildren(true)]
它是用來(lái)告訴解析器   頁(yè)面聲明語(yǔ)法中位于  指定標(biāo)簽內(nèi)的內(nèi)容(子標(biāo)簽)是否是看作該控件的屬性還是當(dāng)作一個(gè)子控件的標(biāo)簽。
true  這里true 是當(dāng)作子標(biāo)簽的意思。  ToolBoxData 的意思是當(dāng)你將這個(gè)控件從tool  box   中拖放到WEBFORM中時(shí)在aspx文件的
    HTML代碼中添加的對(duì)該控件的定義。這里的控件是 : kj_gridview  {0}是控件的標(biāo)記的前綴 
就是你托這個(gè)控件到頁(yè)面上 時(shí)候  他就自動(dòng)添加<{0}:Div runat=server>  這個(gè){0}是你定義的

復(fù)制代碼 代碼如下:

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

這些是類或方法的屬性
這個(gè)在大型的軟件開(kāi)發(fā)中是很有用的,如項(xiàng)目中要用到的一個(gè)模塊是通用的,我們就可以將其單獨(dú)抽出來(lái)做成控件,這個(gè)時(shí)候類或是方法的屬性就有用了
加上這些后使控件類在使用的時(shí)候就會(huì)有相應(yīng)的列項(xiàng)提示等等

您可能感興趣的文章:

相關(guān)文章

  • C#運(yùn)算符重載用法實(shí)例分析

    C#運(yùn)算符重載用法實(shí)例分析

    這篇文章主要介紹了C#運(yùn)算符重載用法,實(shí)例分析了C#中運(yùn)算符重載的基本實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2015-07-07
  • jQuery結(jié)合C#實(shí)現(xiàn)上傳文件的方法

    jQuery結(jié)合C#實(shí)現(xiàn)上傳文件的方法

    這篇文章主要介紹了jQuery結(jié)合C#實(shí)現(xiàn)上傳文件的方法,涉及C#文件上傳的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • ListView用法中與滾動(dòng)相關(guān)的需求實(shí)現(xiàn)

    ListView用法中與滾動(dòng)相關(guān)的需求實(shí)現(xiàn)

    這篇文章主要介紹了ListView用法中與滾動(dòng)相關(guān)的需求實(shí)現(xiàn),獲取并設(shè)置ListView的滾動(dòng)位置,以及獲取滾動(dòng)位置處的項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#單向鏈表實(shí)現(xiàn)非升序插入方法的實(shí)例詳解

    C#單向鏈表實(shí)現(xiàn)非升序插入方法的實(shí)例詳解

    單向鏈表是一種數(shù)據(jù)結(jié)構(gòu),其中元素以線性方式連接在一起,每個(gè)元素都指向下一個(gè)元素,非升序插入意味著元素不是按升序(從小到大)插入鏈表中,本文給大家介紹了C#單向鏈表實(shí)現(xiàn)非升序插入方法的實(shí)例,需要的朋友可以參考下
    2024-03-03
  • C#中out與ref作用區(qū)別示例分析

    C#中out與ref作用區(qū)別示例分析

    這篇文章主要為大家介紹了C#中out與ref作用區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • c#遞歸生成XML實(shí)例

    c#遞歸生成XML實(shí)例

    這篇文章主要介紹了c#遞歸生成XML的方法,以實(shí)例形式較為詳細(xì)的介紹了C#的遞歸算法與XML操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • C#中緊耦合Tight Coupling和松耦合Loose Coupling的實(shí)現(xiàn)

    C#中緊耦合Tight Coupling和松耦合Loose Coupling的實(shí)現(xiàn)

    緊耦合和松耦合是描述模塊或組件之間耦合程度的兩個(gè)概念,本文主要介紹了C#中緊耦合Tight Coupling和松耦合Loose Coupling的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù)

    向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù)

    這篇文章主要介紹了如何向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù),思路很簡(jiǎn)單,需要的朋友可以參考下
    2014-07-07
  • C# 引入委托的目的是什么

    C# 引入委托的目的是什么

    這篇文章主要介紹了C# 引入委托的目的是什么,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論

屏南县| 桃园县| 承德县| 商城县| 长宁县| 白山市| 民勤县| 平果县| 湖北省| 朝阳市| 合江县| 阳谷县| 岢岚县| 蓬安县| 滦平县| 军事| 永平县| 芦溪县| 仁怀市| 鲁山县| 尉氏县| 瓦房店市| 冷水江市| 剑阁县| 容城县| 黄浦区| 安平县| 大渡口区| 玛曲县| 永仁县| 北海市| 石渠县| 佳木斯市| 满洲里市| 涞源县| 肥东县| 南澳县| 云和县| 卢龙县| 宜章县| 淳化县|