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);
}
}
}

二、結構體時表明屬性
如[StructLayout(LayoutKind.Sequential) ]與[StructLayout(LayoutKind.Explicit)] ,首先介紹一下 結構體和類的區(qū)別 :類是按引用傳遞 結構體是按值傳遞
進入正題:
結構體是由若干成員組成的.布局有兩種
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()設置每個成員的位置
這樣就可以實現(xiàn)類似c的公用體的功能
[StructLayout(LayoutKind.Explicit)]
struct S1
{
[FieldOffset(0)]
int a;
[FieldOffset(0)]
int b;
}
這樣a和b在內(nèi)存中地址相同
總結
到此這篇關于C#中[]的幾種用法示例的文章就介紹到這了,更多相關C#中[]用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C# WebApi Get請求方式傳遞實體參數(shù)的方法示例
這篇文章主要給大家介紹了關于C# WebApi Get請求方式傳遞實體參數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-04-04
C#使用InstallerProjects打包桌面應用程序的完整步驟
這篇文章主要給大家介紹了關于C#使用InstallerProjects打包桌面應用程序的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-07-07
asp.net(C#)清除全部Session與單個Session的方法
下面小編就為大家?guī)硪黄猘sp.net(C#)清除全部Session與單個Session的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12

