当前位置: 首页 > news >正文

站内seo的技巧网站404网页界面psd源文件模板

站内seo的技巧,网站404网页界面psd源文件模板,广告设计培训学校有哪些,美橙表业手表网站本质上来说 ref 的就是把 C/C 指针的那一套又拿回来了#xff0c;而且还封装成一套自己的玩法。 我想设计者的初心把 ref 的功能限制得死死的#xff0c;可能也考虑到 C# 是一门面向业务开发的语言#xff0c;讲究的是做项目快狠准#xff0c;性能反而不是第一要素#x…本质上来说 ref 的就是把 C/C 指针的那一套又拿回来了而且还封装成一套自己的玩法。 我想设计者的初心把 ref 的功能限制得死死的可能也考虑到 C# 是一门面向业务开发的语言讲究的是做项目快狠准性能反而不是第一要素这个时候的 ref 很简单看一下代码 class Program {static void Main(string[] args){long price 0;GetPrice(ref price);Console.WriteLine($output: price{price});}public static void GetPrice(ref long price){price 10;} } // output: price10我相信大家都知道方法参数中ref long price拿的是栈中的地址对栈地址上的值进行修改地址上的变量会被修改和引用类型原理一致接下来咋就从汇编的角度去看看。 D:\net5\ConsoleApp4\ConsoleApp3\Program.cs 16:026b048e 8d4declea ecx,[ebp-14h]026b0491 ff15a0ebc800 call dword ptr ds:[0C8EBA0h] (ConsoleApp3.Program.GetPrice(Int64 ByRef), mdToken:06000002)026b0497 90 nop0:000 bp 026b04910:000 gBreakpoint 1 hitChangeEngineStateeax00000000 ebx0057f354 ecx0057f2d4 edx783aaa50 esi02979e7c edi0057f2dceip026b0491 esp0057f2c4 ebp0057f2e8 iopl0 nv up ei pl zr na pe nccs0023 ss002b ds002b es002b fs0053 gs002b efl00000246 026b0491 ff15a0ebc800 call dword ptr ds:[0C8EBA0h] ds:002b:00c8eba000c2be10从汇编的lea ecx,[ebp-14h]就能看到将ebp-14这个单元的内存地址给了 ecx这个 ecx 也就是作为参数传递给了Price方法后续的赋值将会影响这个栈位置上的内容。 方法返回值上的 ref 这就有意思了进入的时候传地址回来的时候也想传地址很显然方法线程栈上的 值类型 是传不出去的毕竟方法返回后esp,ebp 所控制的方法栈帧空间是要销毁的所以只能是堆上对象才能实现。 为了方便理解看如下代码 class Program {static void Main(string[] args){ref long price ref TaskClass.GetCurrentPrice();price 12;Console.WriteLine($output: price{price});}public static ref long GetCurrentPrice(){long[] nums { 10, 20, 30 };return ref nums[1];}} // output: price12可以看到当前的price12,同时nums这个数组也被修改了可以用 windbg 验证一下。 0:000 !dumpheap -type System.Int64[]Address MT Size027ca7b0 04c39d00 36Statistics:MT Count TotalSize Class Name04c39d00 136 System.Int64[]Total 1 objects0:000 dq 027ca7b0 L4027ca7b0 0000000304c39d00 000000000000000a027ca7c0 000000000000000c 000000000000001e可以看到上面的000000000000000c被修改成price12这时候有人就不爽了我不希望外面的代码能修改 price 内容那怎么办呢 还得在ref后面加上readonly改造后如下 到此时写法就有点疯狂了对 C# 开发者来说很难理解对熟悉 C/C 指针的朋友来说又很不习惯太纠结了下面是一段翻译过来的C/C指针代码。 const long long* getcurrentprice();int main() {int i 0;const long long* price getcurrentprice();price 12;printf(num%d, price%d \n, i, *price);}const long long* getcurrentprice() {long long* num new long long[3]{ 10,20,30 };return num 1; }对 ref 变量的 in 操作 这又是一套 C/C 的玩法有时候不希望某一个方法对 ref 变量进行修改注意是不希望某一个方法进行修改其他方法是可以的那这个怎么实现呢这就需要在入参上加in前缀把代码修改一下。 class Program {static void Main(string[] args){ref long price ref GetCurrentPrice();ModifyPrice(in price);Console.WriteLine($output: price{price});}public static ref long GetCurrentPrice(){long[] nums { 10, 20, 30 };return ref nums[1];}public static void ModifyPrice(in long price){price 12;Console.WriteLine(price);} }可以看到这时候报错了如果换成 C 就很简单了只需要在参数上把 in 改成 const 即可。 void modifyprice(const long long* price) {*price 12;printf(%d, *price); }总的来说ref 这一套玩法太另类了按实际需求使用不太会去考虑性能方面的问题。
http://www.pierceye.com/news/246864/

相关文章:

  • 如何建手机网站网站能否做二维码
  • 南京网站建设 雷仁网上海网站制作网络推广方法
  • 营销型网站怎么做安阳县有多少个乡镇
  • 网站评论 设计天气网站建设
  • 潍坊市住房和城乡建设局网站哈尔滨最新发布公告
  • 白云网站 建设信科网络制作网站软件网站
  • 房产网站的建设想发布oa网站 需要备案吗
  • 帮别人做钓鱼网站吗海口网站建设过程
  • 广州php网站建设做网站的公司推荐
  • 百度一下建设银行网站首页网上购物都有哪些网站
  • 装饰公司营销型网站建设idc服务器租赁
  • 广告投放跟网站建设一样吗视频网站能备案吗
  • 哪些网站可以找到兼职做报表的学校网站建设价格明细表
  • 域名购买哪个网站好wordpress 转载插件
  • 网站百度提示风险网站开发 安全
  • 厦门网站建设建网站如何做一个网页项目
  • 锦州市网站建设腾讯企点怎么群发
  • 移动端网站开发哪家好总结格式模板
  • 东山县建设银行网站民宿网站开发的开题报告
  • 北京企业网站seo平台社交网站模板下载
  • 旅游做攻略用什么网站wordpress破解版
  • 杭州做购物网站第一次跑业务怎么找客户
  • 做软件好还是做网站好建筑公司年度工作总结报告
  • 陕西建设 节水 官方网站论坛怎样发帖推广
  • 二合一收款码免费制作网站营销型网站代理
  • 网站建设的技术方案模板淘宝客做网站链接
  • 梅州市网站制作页面简洁的导航网站
  • 绵阳房产网站建设自学广告设计该怎么入手
  • 火星wap建站宏大建设集团有限公司网站
  • 免费搭建业网站西地那非片有延时效果吗