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

做网站怎样实现网上支付网站后台被挂木马

做网站怎样实现网上支付,网站后台被挂木马,wordpress 插件 重置密码,广州天河区酒店本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技#xff0c;如果觉得我是在骗你#xff0c;那么请看看本文的内容。原本最初 C# 的设计是简单和高效开发的#xff0c;在经过了这么多年众多公司和开发者的努力下#xff0c;整个… 本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技如果觉得我是在骗你那么请看看本文的内容。原本最初 C# 的设计是简单和高效开发的在经过了这么多年众多公司和开发者的努力下整个 C# 里面包含了大量有趣的功能。其中一部分功能是针对于某些特殊需求设计的例如高性能或高并发或无内存回收等。在经过了 10 多年的迭代很少人能完全了解整个 C# 语言和框架级做了哪些有趣的功能我在网上找了很多大神的博客然后和很多大神聊天知道了一些科技于是就在本文和大家分享一下。如果大家有了解本博客里面没有收藏的科技还请告诉我现在整个 C# 从编译器到运行时都是开源的所有权在 dotnet 基金会上全部开源的项目都基于最友好的 MIT 协议和 Apache 2 开源协议文档协议遵循CC-BY协议。这将允许任何人任何组织和企业任意处置包括使用复制修改合并发表分发再授权或者销售。唯一的限制是软件中必须包含上述版 权和许可提示后者协议将会除了为用户提供版权许可之外还有专利许可并且授权是免费无排他性的(任何个人和企业都能获得授权)并且永久不可撤销用户使用.NET 和 C# 完全不用担心收费问题和版权问题以及后续无法维护问题。而 dotnet 基金会是一个开放的平台我也是 dotnet 基金会的成员之一。微软在 2020 的时候依然是 dotnet 基金会最大的支持组织现在最火的 dotnet 仓库是 dotnet csharplang 仓库当前的 C# 语言特性由整个社区决定这是一个官方开放用来讨论 C# 语言未来的仓库天天都有大佬们在讨论语言的特性欢迎大家加入接下来让我告诉大家一些很少有人会发现的科技无限级判断空在 C# 6.0 可以使用??判断空那么就可以使用下面代码 var v1 123;string v2 null;string v3 null;var v v1 ?? v2 ?? v3; 实际上可以无限的使用??判断前面一个函数为空那么问题来了下面的代码输出的是多少var n 2 foo?.N ?? 1; 上面代码的 foo 就是空的那么 n 是多少是 1 还是 2 还是 3 还是空想要了解这道题的推导过程请看C# 高级面试题 里面写了很多老司机都不一定能解出使用 using 关键词省略长的定义例如有下面这个代码在这个代码里面使用了很多的 List 嵌套如下面代码所示里面有很多定义的代码var foo new System.Collections.Generic.DictionarySystem.Collections.Generic.ListSystem.Collections.Generic.Liststring, string(); 可以看到上面代码中有大量的代码都是用来作为类型的定义假设这个值作为某个方法的参数那才是可怕一个简单的方法是使用 using 关键词如在文件的开头添加如下代码using HvcnrclHnlfk System.Collections.Generic.DictionarySystem.Collections.Generic.ListSystem.Collections.Generic.Liststring,string; 在添加了上面代码之后在这个文件里的所有用到如上面很长的定义的代码都可以使用 using 后面的值可以代替如本文上面使用了 HvcnrclHnlfk 这个词来看看替换之后的代码长度var foo new HvcnrclHnlfk(); 辣么大实际上写到这里我有些不好意思好像刚刚说的都是大家都知道的那么我就要开始写大家很少知道的科技等等什么是 辣么大 大哇其实这是 lambda 表达式的翻译请看看下面这段有趣的代码 Funcstring,string, EventHandler foo (x, y) (s, e) {var button (Button) s;button.Left x;button.Top y;};Button1.Click foo(0, -1); 上面的代码通过一个 lambda 表达式返回一个另一个 lambda 表达式或者说用一个委托返回另一个委托。这是一个特别有趣的写法通过函数返回函数的思想可以用来写出一些有趣的逻辑特别是在多层嵌套的时候当然使用委托可是会出现另一个问题的请问下面的代码实际调用的是哪个委托下面代码的 a 和 b 和 c 都是 Action委托同时都不是空的((a b c) - (a c))(); 在数学上其实函数也可以视为变量很有科技范的 C# 当然也支持如此的功能将函数包装为委托的时候可以让委托本身支持加减法哦只是这个加减法的规则有些诡异。不信请猜猜上面代码执行了什么函数冲突的类型在遇到某些类型特别是放在 NuGet 上的多个不同的库里面的类型这些类型有相同的类名如 Data 或 Control 等很通用的命名的时候在代码中如果需要同时使用这两个类就需要补全整个命名空间如下面代码var webControl new System.Web.UI.WebControls.Control(); var formControl new System.Windows.Forms.Control(); 如果经常使用这两个控件那么就需要写很多补全命名空间的代码代码很多。好在微软的大佬们给出了一个坑方法使用这个方法可以不写命名空间或者说只需要在文件开始 using 一次请看代码using web System.Web.UI.WebControls; using win System.Windows.Forms;web::Control webControl new web::Control(); win::Control formControl new win::Control(); 参见https://stackoverflow.com/a/9099/6116637extern alias如果使用了两个不同的程序集放在两个不同的 dll 文件里面这两个程序集都有相同命名空间和类型那么如何使用指定的库如下面代码所示在两个 dll 里面都定义了 F.Foo 类型//a.dllnamespace F {public class Foo{} }//b.dllnamespace F {public class Foo{} }这时就可以使用 extern alias 关键词参见C#用extern alias解决两个assembly中相同的类型全名 - fresky - 博客园字符串大家看到了 C# 6.0 的$是不是可以和一起 var str kktpqfThiq;string foo $换行{str}; 注意两个的顺序反过来直接告诉你代码不能这样写此知识点不再适用因为在 C# 8.0 的时候可以按照任意的顺序使用 $ 和  标记。详细请看 $ - 字符串内插 - C# 参考 特别感谢 592844340 群内热心人员勘误特殊关键字实际上有下面几个关键字是没有详细的文档可能只有微软的编译器才知道__makeref__reftype__refvalue__arglist 不过在 C# 7.2 可以使用其他的关键字做到一些功能详细请看我的 C# 7.0 博客使用 Unions C 一样的如果看到 C 可以使用内联不要说 C# 没有这个功能实际上也可以使用 FieldOffset 特性实现和 C 一样的内联的功能 请看下面代码[StructLayout(LayoutKind.Explicit)] public class A {[FieldOffset(0)]public byte One;[FieldOffset(1)]public byte Two;[FieldOffset(2)]public byte Three;[FieldOffset(3)]public byte Four;[FieldOffset(0)]public int Int32; } 如下面代码就定义了int变量修改这个变量就是修改其他的三个变量 static void Main(string[] args){A a new A { Int32 int.MaxValue };Console.WriteLine(a.Int32);Console.WriteLine({0:X} {1:X} {2:X} {3:X}, a.One, a.Two, a.Three, a.Four);a.Four 0;a.Three 0;Console.WriteLine(a.Int32);} 运行代码可以看到输出如下2147483647 FF FF FF 7F 65535 可以看到修改其中某个值都会相互影响这几个值共用了相同的一个内存空间接口默认方法实际上可以给接口使用默认方法使用的方式如下public static void Foo(this IF1 foo) {//实际上大家也看到是如何定义 } 当然了在 C# 8.0 还有更直接的方法详细请看 在 C# 中使用默认接口方法安全地更新接口stackalloc很多人都不知道这个科技这是不安全代码从栈申请空间int* block stackalloc int[100]; 使用的时候需要小心你的栈也许会炸掉参见stackalloc指定编译这个是一个有趣的特性实现的功能是一个编译器技术写给编译器看的特性。使用 Conditional 特性可以让代码在指定条件不使用如下面的代码规定了只有在 DEBUG 宏定义的时候才让 F2 方法生效。因此在 Release 下就不会使用 F2 方法了 public sealed clas Foo{public Foo F1(){Console.WriteLine(进入F1);return this;}[Conditional(DEBUG)]public void F2(){Console.WriteLine(F2);}} 简单让代码跑一下 static void Main(string[] args){var foo new Foo();foo.F1();foo.F2();} 结果是什么大家也知道在 Debug 和 Release 输出是不相同。但是这么简单的怎么会在这里说呢请大家看看这个代码输出什么 static void Main(string[] args){var foo new Foo();foo.F1().F2();} 实际上在 Release 下什么都不会输出此时的 F1 不会被执行true 判断下面写个见鬼的代码 var foo new Foo(10);if (foo){Console.WriteLine(我的类没有继承 bool 居然可以这样写);} 没错 Foo 没有继承 bool 居然可以这样写实际上就是重写 true 方法请看代码 public class Foo{public Foo(int value){_count value;}private readonly int _count;public static bool operator true(Foo mt){return mt._count 0;}public static bool operator false(Foo mt){return mt._count 0;}}是不是觉得很多有人这样写下面让大家看一个很少人会知道的科技感谢walterlv 提供重写运算返回很少人知道实际上重写  可以返回任意的类型而不是只有 bool 类型请看下面代码是可以编译通过的因为我重写运算 class Foo{public int Count { get; set; }public static string operator (Foo f1, Foo f2){if (f1?.Count f2?.Count){return lindexi;}return ;}public static string operator !(Foo f1, Foo f2){return ;}} 可以重写的运算很多返回值可以自己随意定义await 任何类型等待任意的类型包括已定义的基础类型如下面代码await 林德熙逗比;await 不告诉你; 这个代码是可以编译通过的但是只有在我的设备。在看了这个博客之后可能你也可以在你的设备编译其实 await 是可以写很多次的如下面代码await await await await await await await await await await await await await await await await await await await await await await await 林德熙逗比; 变量名使用中文实际上在C#支持所有 Unicode 字符这是编译器支持的所以变量名使用中文也是可以的而且可以使用特殊的字符 public string H\u00e5rføner(){return 可以编译;}if this null一般看到下面的代码都觉得是不可能进入输出的if (this null) Console.WriteLine(this is null); 如果在 if 里面都能使用 this null 成立那么一定是vs炸了。实际上这个代码还是可以运行的在一般的函数如下面的 Foo 函数在调用就需要使用f.Foo()的方法方法里 this 就是 f 这个对象如果 f null那么在调用方法就直接不让运行如何到方法里的判断f.Foo(); //如果 f 为空那么这里就不执行void Foo() {// 如果 this 为空怎么可以调用这个方法if (this null) Console.WriteLine(this is null); } 实际上是可以做的请看C#if (this null)你在逗我this 怎么可能为 null用 IL 编译和反编译看穿一切 - walterlv 这篇博客如上面博客关键在修改 callvirt 为 call 调用直接修改 IL 可以做出很多特殊的写法那么这个可以用在哪里可以用在防止大神反编译如需要使用下面逻辑//执行的代码//不执行的代码 此时简单的反编译也许会这么写if(true) {//执行的代码 } else {//不执行的代码 } 但是直接写 true 很容易让反编译看到不使用代码而且在优化代码会被去掉所以可以使用下面代码if(this null) {//执行的代码 } else {//不执行的代码 } 实际在微软代码也是这样写点击string的实现源代码可以看到微软代码重载的运算符实际上我可以将 null 强转某个类创建一个新的对象请看代码Fantastic fantastic (FantasticInfo) null; fantastic.Foo(); 这里的 FantasticInfo 和 Fantastic 没有任何继承关系而且调用 Foo 不会出现空引用也就是 fantastic 是从一个空的对象创建出来的是不是觉得上面的科技很黑实际原理没有任何黑的科技请看代码 public class Fantastic{private Fantastic(){}public static implicit operator Fantastic(FantasticInfo value) new Fantastic();public void Foo(){}}public class FantasticInfo{} 通过这个方式可以让开发者无法直接创建 Fantastic 类而且在不知道 FantasticInfo 的情况无法创建 Fantastic 也就是让大家需要了解 FantasticInfo 才可以通过上面的方法创建具体请看只有你能 new 出来.NET 隐藏构造函数的 n 种方法Builder Pattern / 构造器模式 - walterlv课件链接 https://r302.cc/J4gxOX当然还有新的 C# 7.0 和 C# 8.0 的新的语法例如下面的内部方法返回自身方法返回自身可以接近无限调用有一天我看到了下面的代码你猜小伙伴用什么代码定义了 Foo 这个代码Foo()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(); 其实只需要定义一个委托用内部方法实现委托因为内部方法是可以返回自身于是就可以使用5行代码写出 Foo 的定义 delegate Foo Foo(); // 定义委托static void Main(string[] args) {Foo Foo() // 定义内部方法{return Foo;} } 不过括号还不可以无限使用因为编译器有一个表达式的长度限制无限长度的委托调用试试这个代码也许你可以无限写下去只要 Roslyn 不会炸就可以 delegate Fx Fx(Fx fx);Fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx fx; 以下部分准确来说是 .NET 提供的功能请问 C# 和 .NET 是什么关系其实我也无法用一两句话说清扔掉了 .NET 依然可以用 C# 写程序反过来扔掉 C# 也依然能用 .NET 写程序表达式树获取函数命名定义一个类下面通过表达式树从类获得函数命名 class Foo{public void KzcSevfio(){}}static void Main(string[] args){GetMethodNameFoo(foo foo.KzcSevfio());}private static void GetMethodNameT(ExpressionActionT action) where T : class{if (action.Body is MethodCallExpression expression){Console.WriteLine(expression.Method.Name);}} 这样就可以拿到函数的命名DebuggerDisplay如果想要在调试的时候鼠标移动到变量显示他的信息可以重写类的 ToString public sealed class Foo{public int Count { get; set; }public override string ToString(){return Count.ToString();}} 但是如果 ToString 被其他地方用了如何显示微软告诉大家使用 DebuggerDisplay 特性 [DebuggerDisplay({DebuggerDisplay})]public sealed class Foo{public int Count { get; set; }private string DebuggerDisplay $(count {Count});} 他可以使用私有的属性、字段使用方法很简单参见Using the DebuggerDisplay Attribute数字格式string format 000;-#;(0);string pos 1.ToString(format); // 001 string neg (-1).ToString(format); // -1 string zer 0.ToString(format); // (0) 参见自定义数字格式字符串调用堆栈如果需要获得调用方法的堆栈可以使用这个文章的方法 class Program{static void Main(string[] args){var foo new Foo();foo.F1();}}public sealed class Foo{public void F1(){F2();}void F2(){var stackTrace new StackTrace();var n stackTrace.FrameCount;for (int i 0; i n; i){Console.WriteLine(stackTrace.GetFrame(i).GetMethod().Name);}}} 输出F2 F1 参见WPF 判断调用方法堆栈欢迎加入 dotnet 职业技术学院 https://t.me/dotnet_campus 使用 Telegram 方法请看 如何使用 Telegram特别感谢特别感谢 吕毅 - walterlv 提供的逗比代码特别感谢队长提供的 .NET Core也是国产化信息系统开发的重要选项 - 张善友 - 博客园 博客。本文开头为了更准确的描述于是抄了队长的博客内容
http://www.zqtcl.cn/news/576348/

相关文章:

  • 惠东县网站建设建设方案
  • 怎么把做的网站发布长春建网站
  • 织梦网站手机端郑州网站制作公司名单
  • 如何建设网站安全网站桥页也叫
  • 南浔网站建设昆山智能网站开发
  • 阿里云可以做电商网站吗杭州网站建设浙江
  • 查询网站备案进度网站建设推广
  • 怎么做公司网站需要什么科目高端网站建设教学
  • 资讯平台网站模板中企中立做的网站好吗
  • 网站开发人员配备山西省吕梁市简介
  • 网站注销主体注销中国建设教育协会培训报名网站
  • 电商网站设计思想建设化妆品网站的成本
  • 做房产网站能赚钱吗深圳龙华区邮政编码
  • 网站开发素材代码手机网站 win8风格
  • 免费推广网站软件班级网站怎么做ppt模板
  • 在线做任务的网站有哪些wordpress ui 插件
  • 竣工验收备案表查询网站优化大师win10能用吗
  • php 网站管理系统做生鲜管理系统的网站
  • 昆山建设工程招聘信息网站业绩显示屏 东莞网站建设技术支持
  • 百度我的网站广东广州网站建设
  • 怎么提高网站流量沈阳有资质做网站的公司有哪些
  • 内蒙古住房与城乡建设厅网站网址微信可以上网
  • 如何网站seo中国化工第九建设公司网站
  • 无锡网站推广优化公司单位网站建设必要性
  • 网站建设丶金手指花总12网站建设是怎么挣钱
  • 网站开发都是用什么框架广西建设网人员查询网
  • 做购物网站怎么写开题报告中山如何建网站
  • 专门做游戏交易的网站新网站如何才做被百度收录
  • 网站模板打包自己做电视视频网站吗
  • seo网站关键词排名提升公司建设网站需要多少钱