欢迎来到天天文库
浏览记录
ID:18230287
大小:51.00 KB
页数:18页
时间:2018-09-15
《c#中使用不安全代码(使用指针的代码)(国外英语资料)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C#中使用不安全代码(使用指针的代码)Howtouseunsafecodeinc#(usingpointercode)ThereislittleneedtousePointersinc#,buttherearestillsomesituationsthatneedtobeused.Forexample,theuseofanunsafecontextthatallowsPointerstobeusedinthefollowingcasesiscorrect:ProcessingexistingstructuresondiskAhi
2、gh-levelCOMorplatforminvocationschemeinvolvingthestructureoftheinternalcontainingPointersPerformancekeycodeItisnotencouragedtouseanunsafecontextinothercases.Specifically,youshouldnotattempttowriteCcodeinC#usinganunsafecontext.Warningthatcodewritteninaninsecurecontext
3、cannotbevalidatedassecure,soitonlyexecuteswhenthecodeisfullytrusted.Inotherwords,youcan'texecuteunsecuredcodeinanuntrustedenvironment.Forexample,youcan'trununsecuredcodedirectlyfromtheInternet.Thistutorialincludesthefollowingexamples:Example1USESPointerstocopyabytear
4、ray.Example2showshowtoinvoketheWindowsReadFilefunction.Example3showshowtoprinttheWin32versionoftheexecutable.Example1ThefollowingexampleUSESapointertocopyabytearrayfromSRCtoDST.Compilethisexamplewiththe/unsafeoption.//fastcopy.Cs//it'sveryhardUsingSystem;TheclassTest
5、{//TheunsafekeywordallowstobeusedwithinThe//followingmethod:StaticunsafevoidCopy(byte[]SRC,intsrcIndex,Byte[]DST,intdstIndex,intcount{If(SRC==null
6、srcIndex<0
7、
8、DST==null
9、
10、dstIndex<0
11、
12、count<0{.ThrownewArgumentException();}IntsrcLen=SRC.length;IntdstLen=DST.If(srclen-sr
13、cindex14、15、dstLen-dstindex16、ytes//integer(4bytes)atatime:For(intn=0;n17、r(intI=0;I<100++I)A[I]=(byte)I;Copy(a,0,b,0,100);WriteLine("Thefirst10elementsare:")For(intI=0;I<10;++I)(b[I]+")WriteLine("");}}s
14、
15、dstLen-dstindex16、ytes//integer(4bytes)atatime:For(intn=0;n17、r(intI=0;I<100++I)A[I]=(byte)I;Copy(a,0,b,0,100);WriteLine("Thefirst10elementsare:")For(intI=0;I<10;++I)(b[I]+")WriteLine("");}}s
16、ytes//integer(4bytes)atatime:For(intn=0;n17、r(intI=0;I<100++I)A[I]=(byte)I;Copy(a,0,b,0,100);WriteLine("Thefirst10elementsare:")For(intI=0;I<10;++I)(b[I]+")WriteLine("");}}s
17、r(intI=0;I<100++I)A[I]=(byte)I;Copy(a,0,b,0,100);WriteLine("Thefirst10elementsare:")For(intI=0;I<10;++I)(b[I]+")WriteLine("");}}s
此文档下载收益归作者所有