淺談C#中[]的幾種用法
一、導(dǎo)入外部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 作用:標(biāo)識這個變量或者函數(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)體是按值傳遞
進(jìn)入正題:
結(jié)構(gòu)體是由若干成員組成的.布局有兩種
1.Sequential,順序布局,比如
struct S1{
int a;
int b;
}
那么默認(rèn)情況下在內(nèi)存里是先排a,再排b
也就是如果能取到a的地址,和b的地址,則相差一個int類型的長度,4字節(jié)
[StructLayout(LayoutKind.Sequential)]
struct S1
{
int a;
int b;
}
這樣和上一個是一樣的.因?yàn)槟J(rèn)的內(nèi)存排列就是Sequential,也就是按成員的先后順序排列.
2.Explicit,精確布局
需要用FieldOffset()設(shè)置每個成員的位置
這樣就可以實(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)文章
分享兩種實(shí)現(xiàn)Winform程序的多語言支持的多種解決方案
本篇文章主要介紹了分享兩種實(shí)現(xiàn)Winform程序的多語言支持的多種解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。2017-02-02
深入解析C#設(shè)計(jì)模式中對橋接模式的具體運(yùn)用
這篇文章主要介紹了C#設(shè)計(jì)模式中對橋接模式的具體運(yùn)用,橋接模式所強(qiáng)調(diào)的解耦在代碼維護(hù)中非常有用,需要的朋友可以參考下2016-02-02
C#制作多線程處理強(qiáng)化版網(wǎng)絡(luò)爬蟲
這篇文章主要介紹了C#制作多線程處理強(qiáng)化版網(wǎng)絡(luò)爬蟲的相關(guān)代碼,有想學(xué)習(xí)C#多線程編程的小伙伴可以參考下2016-09-09
C#程序中session的基本設(shè)置示例及清除session的方法
這篇文章主要介紹了C#程序中session的基本設(shè)置示例及清除session的方法,是C#入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-04-04

