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

盐城网站建设包括哪些网店代运营哪家好

盐城网站建设包括哪些,网店代运营哪家好,五华网站建设,行政单位门户网站建设方案说到泛型方法#xff0c;这个是.net 2.0的时候引入的一个重要功能#xff0c;c#2.0也对此作了非常好的支持#xff0c;可以不需要显试的声明泛型类型#xff0c;让编译器自动推断#xff0c;例如#xff1a; 1 void FT(T value){} 2 //... 3 int i 0; 4 F(i); 此…  说到泛型方法这个是.net 2.0的时候引入的一个重要功能c#2.0也对此作了非常好的支持可以不需要显试的声明泛型类型让编译器自动推断例如 1 void FT(T value){} 2 //... 3 int i 0; 4 F(i); 此时编译器可以自动推导出这里的T就是int这极大的方便了我们写代码的效率。   说到扩展方法这个是.net 3.5的时候引入的另一个重要功能c#3.0也在linq中大量的应用这个功能当扩展方法是扩展一个泛型的类型时显然也不需要我们指定具体的泛型类型编译器会为我们自动推断例如 1 static void FT(this ListT list){} 2 //... 3 Listint list new Listint(); 4 list.F();   最后说到协变和逆变也就是c#中的in/out这个是.net 4.0的时候引入的一个重要的功能例如 1 Funcstring foo () Foo; 2 Funcobject bar foo;   然后我们将泛型方法推断和协变和逆变放在一起 1 public static void Foo(this Actionstring action){} 2 //... 3 Actionobject action o {}; 4 action.Foo();   看起来很不错不过要是遇到些复杂点的会怎么样 1 public static void Foo(this IEnumerableIEnumerableobject that) {} 2 //... 3 ListListstring bar new ListListstring(); 4 bar.Foo();   看到这里相信所有都为c#的in/out拍手叫好不过别急除了outout我们还可以玩令人抓狂的inin 1 public static void Foo(this ActionActionobject that) {} 2 //... 3 ActionActionstring action a a(O_O); 4 action.Foo();   看到这里有没有发现什么问题如果你没觉得有什么不舒服的感觉说明你一定是懂协变和逆变的高手或是完全不懂的初学者。   先想下定义Actionin TT 是in的也就是Actionobject里面的object可以被string这样更具体的类型替代而这里ActionActionstring里面的Actionstring被Actionobject替代了怎么看都感觉有些怪异不过在细细品味一下就可以发现这个结果是完全合理的。string虽然比object更具体不过一个接受string的方法可比一个接受object的方法更抽象所以可以简单的得到一个结论ininout   文章要是到这里结束估计很多人就认为本文是对c#的无比赞美了吧不过重点是这里别忘了多个泛型参数可以玩出很多猥琐的东西例如双/多泛型锁定随便起的名字 1 public static void FooT(this ActionT, T that) {} 2 //... 3 Actionstring, object action (s, o) {}; 4 action.Foo();   c#编译器对扩展方法支持的确是有一手这么变态的T也可以被推断出是object不得不佩服一把再来看看out的情况别忘了前面的结论ininout 1 public static void FooT(this ActionActionT, ActionT that) {} 2 //... 3 ActionActionstring, object action (s, o) {}; 4 action.Foo();   c#编译器依然表现出专业的结果正确的推断出了T应当是string不过泛型方法的类型推断却完全是另外一番风景 1 public void FooT(ActionT, T that) {} 2 //... 3 Actionstring, object action (s, o) {}; 4 Foo(action); // failed. 5 Fooobject(action); // failed. 6 Foo((Actionobject, object)action); // succeeded.   看到这个结果是不是想大骂c#编译器这也太山寨了吧。   别急我们还可以玩得更加浮云 1 public static FooT(this ActionActionT, ActionT that) {} 2 // ... 3 ActionActionListstring, ActionArrayList bar null; 4 bar.Foo(); // failed. 5 bar.FooIEnumerable(); // succeeded.   或者这个 public static FooT(this ActionT, T that) {} // ... ActionIEnumerablechar, IComparablestring action null; action.Foo(); // failed. action.Foostring(); // succeeded.   c#编译器显然不想瞎猜T的类型是什么要求必须编程者明确指出T的具体类型。 转载于:https://www.cnblogs.com/vwxyzh/p/3704220.html
http://www.pierceye.com/news/400706/

相关文章:

  • 网站建设与发布需要什么手机端开发app
  • 无锡做网站无锡网站设计2345网址导航手机上网导航下载
  • html中文美食网站营销型网站维护费用
  • 电商网站建设课设用什么软件制作网站
  • 杭州手机网站wordpress随机调用页面
  • html5网站编写长网页网站
  • 订餐网站系统建设方案建一个网上商城需要多少钱
  • 手机网站asp付费抽奖网站怎么做
  • 国际网站哪里做vs2010 c 建设网站
  • 企业网站更新什么内容永城做网站
  • wordpress 众筹网站模板html5风格网站特色
  • 服装设计参考网站重庆景点排名
  • 网至普的营销型网站建设扬州网站商城建设价格表
  • 成品网站价格表简答网站内容建设的时候内链重要性
  • 视频链接生成器某网站搜索引擎优化
  • flash网站案例vi设计是设计什么
  • ip查询网站备案查询企业网络营销推广平台
  • 多城市网站建设免费制作小程序的平台
  • 郑州网站建设出名吗?wordpress获取登录密码
  • 网站建设论文的开题报告重庆市工程建设信息
  • 商务网站设计方案门户网站的优点
  • 河津网站制作wampserver做的网站
  • 洛阳专业网站设计开发制作建站公司零陵区住房和城乡建设局网站
  • 在哪里可以学做网站游戏开发大亨下载
  • 找人做ps的网站无锡 做公司网站
  • 云速建站可以建个人网站吗wordpress仿站难吗
  • 如何取外贸网站域名凡科h5制作教程
  • 蜘蛛不抓取网站的原因中山h5网站建设
  • 百度免费推广网站建网站用的免费软件
  • 网站建设西安哪里好广州做企业网站的公司