• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0

            http://blog.csdn.net/Core_Star/archive/2010/03/30/5433862.aspx
            C#中方括號可用于數(shù)組,索引、屬性,更重要的是用于外部DLL類庫的引用。

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

                [DllImport("kernel32.dll")]這叫引入kernel32.dll這個動C#中方括號可用于數(shù)組,索引、屬性,更重要的是用于外部DLL類庫的引用。

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

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

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

            需要注意的是,在調(diào)用COM組件之前,我們需要在.NET程序中引用名稱空間:System.Runtime.InteropServices 。因為我們需要使用這個名稱空間所提供的一個方法:DllImport。

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

            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)時間的信息結(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 = "本計算機中有" + 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();
                        //調(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)時間信息
                        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. 數(shù)組、索引器中的應用

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

            indexexpr     索引表達式。   
             備注 
              數(shù)組類型是一種后跟  []  的類型: 
               
              int[]  fib;  //  fib  is  of  type  int[],  "array  of  int" 
              fib  =  new  int[100];  //  create  a  100-element  int  array 
              若要訪問數(shù)組的一個元素,則用方括號括起所需元素的索引: 
               
              fib[0]  =  fib[1]  =  1; 
              for(  int  i=2;  i <100;  ++i  )  fib[i]  =  fib[i-1]  +  fib[i-2]; 
              如果數(shù)組索引超出范圍,則會引發(fā)異常。 
               
              不能重載數(shù)組索引運算符;但類型可以定義包含一個或多個參數(shù)的索引器和屬性。索引器參數(shù)括在方括號中(就像數(shù)組索引一樣),但索引器參數(shù)可聲明為任何類型(與數(shù)組索引不同,數(shù)組索引必須為整數(shù))。 
               
              例如,.NET  Framework  定義一個哈希表類型,該類型將鍵和任意類型的值關(guān)聯(lián)在一起。 
               
              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]; 
              } 
              不執(zhí)行邊界檢查。 
                [ToolBoxItem(false)]表示不在IDE工具箱的控件集合中顯示。

            [ParseChildren(true)] 它是用來告訴解析器   頁面聲明語法中位于
            指定標簽內(nèi)的內(nèi)容(子標簽)是否是看作該控件的屬性還是當作一個子控件的標簽。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)]這些是類或方法的屬性這個在大型的軟件開發(fā)中是很有用的,如項目中要用到的一個模塊是通用的,我們就可以將其單獨抽出來做成控件,這個時候類或是方法的屬性就有用了加上這些后使控件類在使用的時候就會有相應的列項提示等等

            posted on 2011-03-08 14:03 luis 閱讀(664) 評論(0)  編輯 收藏 引用
            <2011年4月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久人妻一区精品性色av| 中文精品久久久久国产网址| 国产成人久久精品一区二区三区| 伊人久久久AV老熟妇色| 久久久久久久尹人综合网亚洲| 一本久久a久久精品综合夜夜 | 18禁黄久久久AAA片| 精品久久8x国产免费观看| 99久久精品免费看国产| 99精品久久久久久久婷婷| 精品欧美一区二区三区久久久 | 色综合久久中文综合网| 国产成人精品久久| 午夜精品久久久内射近拍高清 | 亚洲综合伊人久久大杳蕉| 久久精品国产亚洲Aⅴ香蕉 | 久久久不卡国产精品一区二区| 色欲综合久久躁天天躁蜜桃| 一本大道久久东京热无码AV| 久久精品国产精品亜洲毛片| 久久综合九色综合久99| 国产精品99久久久久久人| 国产69精品久久久久观看软件 | 久久婷婷成人综合色综合| 亚洲国产成人久久一区久久| 精品久久久久一区二区三区| 精品精品国产自在久久高清| 久久久久亚洲av无码专区| 亚洲va久久久噜噜噜久久天堂| 中文精品99久久国产| 亚洲国产日韩综合久久精品| 亚洲国产综合久久天堂 | 久久播电影网| 久久天天躁狠狠躁夜夜av浪潮| 精品久久久久久无码人妻热 | 久久久久综合网久久| 97久久精品国产精品青草| 精品久久久久久久| 亚洲国产二区三区久久| 久久国产成人精品国产成人亚洲| 国产巨作麻豆欧美亚洲综合久久 |