淺談C#中[]的幾種用法
一、導(dǎo)入外部DLL函數(shù)
如[DllImport(“kernel32.dll”)]
這叫引入kernel32.dll這個(gè)動(dòng)態(tài)連接庫。這個(gè)動(dòng)態(tài)連接庫里面包含了很多WindowsAPI函數(shù),如果你想使用這面的函數(shù),就需要這么引入。舉個(gè)例子:
[DllImport(“kernel32.dll”)] private static extern void FunName(arg,[arg]);
extern 作用:標(biāo)識(shí)這個(gè)變量或者函數(shù)定義在其他文件 ,提示編譯器遇到此變量的時(shí),在其他模塊里尋找,這里是在提供的動(dòng)態(tài)庫里找
示列代碼:
using System; using System.Text; using System.Runtime.InteropServices; namespace Windows.Help { public partial class SystemInfo { [DllImport("kernel32")] public static extern void GetWindowsDirectory(StringBuilder WinDir, int count); [DllImport("kernel32")] public static extern void GetSystemDirectory(StringBuilder SysDir, int count); public static void Main () { const int nChars = 128; StringBuilder Buff = new StringBuilder(nChars); GetWindowsDirectory(Buff, nChars); String t = "Windows路徑:" + Buff.ToString(); System.Console.WriteLine(t); } } }
二、結(jié)構(gòu)體時(shí)表明屬性
如[StructLayout(LayoutKind.Sequential) ]
與[StructLayout(LayoutKind.Explicit)]
,首先介紹一下 結(jié)構(gòu)體和類的區(qū)別 :類是按引用傳遞 結(jié)構(gòu)體是按值傳遞
進(jìn)入正題:
結(jié)構(gòu)體是由若干成員組成的.布局有兩種
1.Sequential,順序布局,比如
struct S1{ int a; int b; }
那么默認(rèn)情況下在內(nèi)存里是先排a,再排b
也就是如果能取到a的地址,和b的地址,則相差一個(gè)int類型的長度,4字節(jié)
[StructLayout(LayoutKind.Sequential)] struct S1 { int a; int b; }
這樣和上一個(gè)是一樣的.因?yàn)槟J(rèn)的內(nèi)存排列就是Sequential,也就是按成員的先后順序排列.
2.Explicit,精確布局
需要用FieldOffset()設(shè)置每個(gè)成員的位置
這樣就可以實(shí)現(xiàn)類似c的公用體的功能
[StructLayout(LayoutKind.Explicit)] struct S1 { [FieldOffset(0)] int a; [FieldOffset(0)] int b; }
這樣a和b在內(nèi)存中地址相同
到此這篇關(guān)于淺談C#中[]的幾種用法的文章就介紹到這了,更多相關(guān)C# []用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位)
這篇文章主要介紹了C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位),詳細(xì)的介紹了常出現(xiàn)的幾種時(shí)間方式及其時(shí)間與時(shí)間戳互轉(zhuǎn)的方法,非常具有實(shí)用價(jià)值,希望此文章對(duì)各位有所幫助2018-10-10C#微信開發(fā)之微信公眾號(hào)標(biāo)簽管理功能
這篇文章主要介紹了C#微信開發(fā)之微信公眾號(hào)標(biāo)簽管理功能 的相關(guān)資料,需要的朋友可以參考下2016-05-05DataGridView設(shè)置單元格的提示內(nèi)容ToolTip
這篇文章介紹了DataGridView設(shè)置單元格提示內(nèi)容ToolTip的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法示例
這篇文章主要介紹了C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了FileStream文件流的形式循環(huán)讀取大文件的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05C#中使用Override和New關(guān)鍵字進(jìn)行版本控制
在?C#?中,override?和?new?關(guān)鍵字用于控制類之間的成員方法的隱藏和重寫,理解它們之間的差異和使用場景對(duì)于設(shè)計(jì)靈活且易于維護(hù)的代碼至關(guān)重要,在這篇博客中,我們將詳細(xì)探討這兩個(gè)關(guān)鍵字的用法,并通過示例來說明它們的實(shí)際應(yīng)用,需要的朋友可以參考下2024-10-10