DotNet进阶
DotNet进阶,多年的总结
sinolover
完成项目,就要软硬兼施
展开
-
【转】C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一
要知道C++/CLI是什么,首先知道什么是CLI。一、CLI简介CLI:(Common Language Infrastructure,通用语言框架)提供了一套可执行代码和它所运行需要的虚拟执行环境的规范。更通俗的我们可以说它是一个虚拟平台,是操作系统和应用程序间的一层抽象。微软的.NET的基础CLR(Common Language Runtime,通用语言运行时)就是CLI的一个实例。CLI主要的组成部分有:CTS,Metadata,CLS和VES。★ CTS(Co...原创 2020-08-19 09:01:07 · 812 阅读 · 0 评论 -
【转】Net Framework,Net Core 和 Net Standard 区别
前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究。下面我将说一下我自己对着三个的认识如果有不足的地方,请大家指出。大家的讨论是这个问题引起的如下:NetCoreNet FrameworkNet Standard最终大家想了解的是这些的区别是什么。 Net Framework 是什么 1.N...原创 2020-11-13 13:51:03 · 534 阅读 · 0 评论 -
asp.net mvc webform和razor的page基类区别
接触过asp.net mvc的都知道,在传统的webform的模式下,page页面的基类是这样声明的:<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage" %>如果是partial view的话,则是这样声明的:<%@ Control L...原创 2020-02-18 07:30:59 · 668 阅读 · 0 评论 -
第十八节:跨域请求的解决方案和WebApi特有的处理方式
一. 简介前言:跨域问题发生在Javascript发起Ajax调用,其根本原因是因为浏览器对于这种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器明确地告知它允许跨域调用。假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 Ajax 来请求将会...原创 2020-02-11 09:24:33 · 217 阅读 · 0 评论 -
第十七节:易混淆的概念(静态和非静态、拆箱和装箱)
一. 静态和非静态1. 概念介绍 ① 静态类(被static修饰) vs 普通类(没有被static修饰) ② 静态成员:被static修饰的成员,比如:静态方法、静态字段等 ③ 普通成员(实例成员):不被static修饰的成员,比如:普通方法、普通字段2. 运行机制 ① 静态成员在程序运行的时候会“先于”实例成员被加载到内存中,静态成员不需要单独创建,当然静态类...原创 2020-02-11 09:23:55 · 158 阅读 · 0 评论 -
第十六节:语法总结(3)(C#6.0和C#7.0新语法)
一. C# 6.0 新语法1. 自动属性初始化可以赋值 1 /// <summary> 2 /// 自动属性初始化 3 /// </summary> 4 public class UserInfor 5 { 6 public string userId { get; set; } = "123456...原创 2020-02-11 09:20:25 · 367 阅读 · 0 评论 -
第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)
一. 基本介绍回忆:最早接触到表达式目录树(Expression)可能要追溯到几年前使用EF早期的时候,发现where方法里的参数是Expression<Func<T,bool>>这么一个类型,当初不是很理解,只是知道传入lambda表达式使用即可,对于Expression和里面的Func<T,bool>到底是怎么一种关系,都不清楚。 今天,带着回...原创 2020-02-06 12:27:23 · 547 阅读 · 0 评论 -
第十四节:Lambda、linq、SQL的相爱相杀(3)
一. SQL 开篇1. where用法1 #region 封装EF调用SQL语句查询2 public static List<T> ExecuteQuery<T>(string sql, params SqlParameter[] pars)3 {4 return db.Database.Sq...原创 2020-02-06 12:27:14 · 184 阅读 · 0 评论 -
第十三节:Lambda、linq、SQL的相爱相杀(2)
一. Linq开篇1.Where用法 linq中where的用法与SQL中where的用法基本一致。 1 #region 01-where用法 2 { 3 //1. where用法 4 //1.1 查询账号为admin的用户信息 5 ...原创 2020-02-06 12:26:53 · 224 阅读 · 0 评论 -
第十二节:Lambda、linq、SQL的相爱相杀(1)
一. 谈情怀 Lambda、Linq、SQL伴随着我的开发一年又一年,但它们三者并没有此消彼长,各自占有这一定的比重,起着不可替代的作用。 相信我们最先接触的应该就是SQL了,凡是科班出身的人,大学期间都会学习SQL Server数据库,当然也会学习SQL语言了(顺便吐槽一下,学校用SQL Server版本真老,好像是2005,我现在都用2016了),补充一点:主流数据库像SQ...原创 2020-02-06 12:26:29 · 263 阅读 · 0 评论 -
第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
一. 基本概念1. 什么是特性? MSDN官方给出的定义时:公共语言运行时允许添加类似关键字的描述声明,叫做特性,它对程序中的元素进行标注,如类型、字段、方法和属性等。Attribute和Microsoft .Net Framework文件的元数据(metadata)保存在一起,可以用来向运行时描述你的代码,或者在程序运行时影响程序的行为。 我的理解:在不影响类封装的情况的下,...原创 2020-02-06 12:26:06 · 342 阅读 · 0 评论 -
第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托。 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下。 1 public class Calculator2 2 { 3 //传统解决方案一:在该类中声明多个方法,分别是加倍、平方、立方的方法 4 5...原创 2020-02-05 16:02:14 · 411 阅读 · 0 评论 -
第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)
一. 委托的发展历史和基本用法 说起委托,每个人可能都会对他有不同的理解,结合实战中委托的使用,我对其理解是:委托和类一样,是用户的一个自定义类型,委托可以有参数、有返回值,委托的关键字是delegate,委托是方法的抽象,有了委托的存在,使得方法可以作为参数传递给另一个方法,同时调用委托的时候,委托所包含的所有方法都会被实现。 委托的写法由繁琐→简洁,经历了好多过程,大致概括为:ne...原创 2020-02-05 16:01:51 · 188 阅读 · 0 评论 -
第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
一. 匿名类1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率。 匿名类的声明语法: var obj=new {字段赋值}; 代码如下:1 // 匿名类(匿名类通过new关键字实现)2 Console.WriteLine("-------------------...原创 2020-02-05 16:01:49 · 199 阅读 · 0 评论 -
第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)
一. 语法糖简介 语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。 需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们...原创 2020-02-05 16:01:33 · 233 阅读 · 0 评论 -
第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
一. 加载dll,读取相关信息1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load、LoadFile、LoadFrom。1 //1.1 Load方法:动态默认加载当前路径下的(bin)下的dll文件,不需要后缀2 Assembly assembly = Assembly.Load("DB.SQLServer");3 ...原创 2020-02-05 16:01:22 · 349 阅读 · 0 评论 -
第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)
一. 泛型诞生的背景 在介绍背景之前,先来看一个案例,要求:分别输出实体model1、model2、model3的id和name值,这三个实体有相同的属性名字id和name。 1 public class myUtils 2 { 3 //要求:分别输出实体model1、model2、model3的id和name值,这三个实体有相同的属性名字id和nam...原创 2020-02-05 16:00:59 · 480 阅读 · 0 评论 -
第四节:IO、序列化和反序列化、加密解密技术
一. IO读写 这里主要包括文件的读、写、移动、复制、删除、文件夹的创建、文件夹的删除等常规操作。注意:这里需要特别注意,对于普通的控制台程序和Web程序,将"相对路径"转换成"绝对路径"的方法不一致。(1).在web程序中,可以使用HttpContext.Current.Server.MapPath进行转换,使用方法通过 ~/定位到一级目录,eg:FileOperateHel...原创 2020-02-05 16:00:51 · 296 阅读 · 1 评论 -
第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字
一.各类数据结构比较及其线程安全问题1. Array(数组): 分配在连续内存中,不能随意扩展,数组中数值类型必须是一致的。数组的声明有两种形式:直接定义长度,然后赋值;直接赋值。 缺点:插入数据慢。 优点:性能高,数据再多性能也没有影响 特别注意:Array不是线程安全,在多线程中需要配合锁机制来进行,如果不想使用锁,可以用ConcurrentStack这个线程安全...原创 2020-02-05 16:00:34 · 459 阅读 · 0 评论 -
第二节:重写(new)、覆写(overwrite)、和重载(overload)
一. 重写1.关键字:new2.含义:子类继承父类中的普通方法,如果在子类中重写了一个和父类中完全相同的方法,子类中会报警告(问是否显式的隐藏父类的中的方法),如果在子类中的方法前加上new关键字,则警告消失。注意: * 虽然可以不使用 new 修饰符来隐藏成员,但将收到编译器警告。 如果使用 new 来显式隐藏成员,将禁止此警告。 * 这里需要特别注意,隐藏父类方法是...原创 2020-02-05 15:59:58 · 722 阅读 · 0 评论 -
第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较
一. 面向对象思想1. 面向过程(OP)和面向对象(OO)的区别: (1):面向过程就是排着用最简单的代码一步一步写下去,没有封装,当业务复杂的时候,改动就很麻烦了 (2):面向对象将复杂的业务分离出来几个类,然后将业务封装到类中的方法进行实现,很简洁。2. 面向对象的三大特征(1). 封装:将一些行为以类为单位进行包裹起来,然后通过类进行调用(如People类),可以利用...原创 2020-02-05 15:59:45 · 231 阅读 · 0 评论 -
DotNet进阶系列
一. 回顾历史 回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言、ORM框架、多线程技术、设计模式、前端技术、MVC、MVVM框架思想等等,每种技术随着多次使用,随着不断的反思,逐渐经历 “了解→理解→掌握→精通 ”这么一个过程,从最初的只能实现功能到如今的“每一步都考虑性能优化问题”,在近两年内,开始写博客,最初只是...原创 2020-02-06 12:25:35 · 198 阅读 · 0 评论