淺談C#中[]的幾種用法
一、導入外部DLL函數(shù)
如[DllImport(“kernel32.dll”)]
這叫引入kernel32.dll這個動態(tài)連接庫。這個動態(tài)連接庫里面包含了很多WindowsAPI函數(shù),如果你想使用這面的函數(shù),就需要這么引入。舉個例子:
[DllImport(“kernel32.dll”)] private static extern void FunName(arg,[arg]);
extern 作用:標識這個變量或者函數(shù)定義在其他文件 ,提示編譯器遇到此變量的時,在其他模塊里尋找,這里是在提供的動態(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)體時表明屬性
如[StructLayout(LayoutKind.Sequential) ]
與[StructLayout(LayoutKind.Explicit)]
,首先介紹一下 結(jié)構(gòu)體和類的區(qū)別 :類是按引用傳遞 結(jié)構(gòu)體是按值傳遞
進入正題:
結(jié)構(gòu)體是由若干成員組成的.布局有兩種
1.Sequential,順序布局,比如
struct S1{ int a; int b; }
那么默認情況下在內(nèi)存里是先排a,再排b
也就是如果能取到a的地址,和b的地址,則相差一個int類型的長度,4字節(jié)
[StructLayout(LayoutKind.Sequential)] struct S1 { int a; int b; }
這樣和上一個是一樣的.因為默認的內(nèi)存排列就是Sequential,也就是按成員的先后順序排列.
2.Explicit,精確布局
需要用FieldOffset()設(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DataGridView設(shè)置單元格的提示內(nèi)容ToolTip
這篇文章介紹了DataGridView設(shè)置單元格提示內(nèi)容ToolTip的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法示例
這篇文章主要介紹了C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法,結(jié)合實例形式分析了FileStream文件流的形式循環(huán)讀取大文件的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05C#中使用Override和New關(guān)鍵字進行版本控制
在?C#?中,override?和?new?關(guān)鍵字用于控制類之間的成員方法的隱藏和重寫,理解它們之間的差異和使用場景對于設(shè)計靈活且易于維護的代碼至關(guān)重要,在這篇博客中,我們將詳細探討這兩個關(guān)鍵字的用法,并通過示例來說明它們的實際應(yīng)用,需要的朋友可以參考下2024-10-10