脚踏实地学C#4-静态类】的更多相关文章

扩展方法(Extension Method) MSDN定义:能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法须知: 1.扩展方法声明所在的类必须被声明为static 2.扩展方法必须被声明为static 3.扩展方法必须包含this关键字作为它的第一个参数类型,并后跟所扩展的类的名称 创建扩展方法 //通过扩展方法 创建一个类似List FindAll方法 namespace Blog_ExtensonMethod { //静态类 public s…
起因 问:静态类可以实现接口及继承? 答:都不可以 思考:为什么不可以呢? 学习 静态类,有时我们又称为工具类(密封抽象类),从MSDN文档没有直接静态类的定义,这里只能说用static(不能用于结构,只能用于类)关键字声明的类,就是静态类. 静态类与非静态类的区别:静态类不能实例化,就是不能通过使用 new 关键字创建静态类类型的变量.通过类名本身访问自身成员: 特性:1.仅包含静态成员(字段.方法.属性.事件) 2.无法实例化 3.是密封的 4.不能包含实例构造函数 定义静态类及其使用 //…
引用类型和值类型介绍 CLR支持两种类型,引用类型和值类型两种基本的类型: 值类型下有int.double.枚举等类型同时也可以称为结构,如int结构类型.double结构类型,所有的值类型都是隐式密封(sealed)的,防止将一个值类型作其他引用类型或值类型的基类. 任何成为类的都是引用类型.如string.StringBuilder都是引用类型,这两个是引用类型,但不可以被继承,它两也是密封类. 引用类型和值类型的区别是: 值类型是用struct关键字来声明的,引用类型是用class关键字来…
装箱:一种接受值类型的值,根据这个值在堆中创建一个完整的引用类型对象并返回对象的引用(堆地址)的隐式转换 int i_number = 2; //在栈中声明int类型i_Number变量并初始化 object o_number = null; //在栈中声明object类型的o_Number变量并初始化值为null,不在堆中分配内存 o_number = i_number; //装箱过程 如下图所示①→②→③ Console.WriteLine(o_number); 装箱过程:1.在托管堆分配好…
基元类型:编译器直接支持的数据类型 基元类型直接映射到FCL类库上,如int 和Int32是等价的,只不过是int是c#提供的,Int32是FCL类库提供的. int只是Int32的别名 using int=System.Int32; 使用Int32: System.Int32 number = new System.Int32(); number = 2; Console.WriteLine(number); Console.ReadKey(); 生成IL代码为: .method privat…
原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新. 现在我们已经知道什么是repository(缩写repo)了,假如我们现在建立一个仓库(repo),那么在建立仓库的这个目录中有一个“.git”的文件夹.这个文件夹非常…
第一次写,希望大神们多指点. 对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习.网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTERLAB,网址如下:http://www.pentesterlab.com/ 刚开始学,我碰到很多困难,如对数据库不够熟悉,对PHP不熟悉,对各种大神的工具不熟悉.积沙成塔,滴水穿石,我们一步一步踏实地学,可能也用不了多久,就深入这行了. 不废话了,进入正题. From SQL injection…
课前准备 我们将会从零基础带领大家一步一步的学习Web前端技术,这个零基础是什么概念呢?你只要具备以下技能就可以学习: 一.个人学习条件(必备) 会开关电脑,手机.(哇塞,任老师你逗我们吧!). 会打字,无论你是拼音输入还是五笔字型.只有知道键盘上的英文字母可以打出汉字和英文单词即可.(这个真心不难啊) 上过网,甭管你是上网买过东西还是在网页上打过游戏.还是用百度,谷歌查找过资料.只要你打开过浏览器就行. 还有就是眼睛可以看清楚物体或者是手指头没有缺陷. 二.个人学习环境(必备) 系统环境:Wi…
Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新. 现在我们已经知道什么是repository(缩写repo)了,假如我们现在建立一个仓库(repo),那么在建立仓库的这个目录中有一个“.git”的文件夹.这个文件夹非常重要,所有的版本信息,更新记录,以及Git进行仓库管理的相关信息全部保存在这个文件夹里面.所以,不要修改…
Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新. 现在我们已经知道什么是repository(缩写repo)了,假如我们现在建立一个仓库(repo),那么在建立仓库的这个目录中有一个“.git”的文件夹.这个文件夹非常重要,所有的版本信息,更新记录,以及Git进行仓库管理的相关信息全部保存在这个文件夹里面.所以,不要修改…
课前准备 我们将会从零基础带领大家一步一步的学习Web前端技术,这个零基础是什么概念呢?你只要具备以下技能就可以学习: 一.个人学习条件(必备) 会开关电脑,手机.(哇塞,任老师你逗我们吧!). 会打字,无论你是拼音输入还是五笔字型.只有知道键盘上的英文字母可以打出汉字和英文单词即可.(这个真心不难啊) 上过网,甭管你是上网买过东西还是在网页上打过游戏.还是用百度,谷歌查找过资料.只要你打开过浏览器就行. 还有就是眼睛可以看清楚物体或者是手指头没有缺陷. 二.个人学习环境(必备) 系统环境:Wi…
10.10 想着自己再过一个月就要退役了,真叫人心酸.想到徐志摩的诗: "悄悄地,我走了,正如我悄悄的来,我挥一挥衣袖,不带走一片云彩." 学了这么久的OI,感觉真的就像诗里讲的一样,有一天自己也会离开,不带走一片云彩地离开.有时,看着自己每况愈下的成绩,看着旁边不管是学科还是竞赛的强手们一天一天脚踏实的扎扎实实的努力,我真的会怀疑当初自己的决定是不是足够成熟,足够睿智. "写下不忘初心四个字的时候,我的手甚至在颤抖." 也许我的累只是假象,也许我真的只是不够努力,…
前面我们封装了一维数组(具备树形结构相关属性)处理成树形结构的方法:https://www.cnblogs.com/coder--wang/p/15013664.html 接下来我们来一波反向操作,封装一个可以将树形结构的数据扁平化的方法.这种场景在业务中还是很常见的,比如一个级联菜单,有时候你需要判断某个id或者某个字段,是否存在于该级联菜单的多维数组中,亦或者你需要将该多维数组中的字段进行处理,那么此时,对这个树形的复杂数组进行降维就显得很有必要了!下面直接上代码: 1 /** 2 * 3…
不知道大家平时工作中,有没有遇到这样一种情况:后端接口返回的数据,全都是一维的数组,都是平铺直叙式的数据,业务需求却要你实现树形结构的功能.那么,针对这种情况该怎么办呢?是跟后台好好沟通一下呢,还是沟通一下呢 :) 下面我将封装一种重组树形结构数据的方法,希望能够给大家带来一点帮助! 1 /** 2 * 3 * @param {Array} data 4 * @param {string} pid 子树找父级的标识,这里面默认子树的标识为id,如果不为id,就再传一个子树id 5 标识 6 *…
大家在平时业务中应该经常跟小数打交道吧,有没有被小数点的保留位数问题搞得头疼啊.比如,保留一位小数,保留俩位小数,保留三位小数,向上取整.四舍五入等等. 而我最近在项目中正好遇到类似的问题:有的地方要求保留一位小数,有的地方要求保留俩位,有的地方要求四舍五入,有的地方要求向下取整...这些情形,总不能一个个来处理吧?于是乎,干脆封装一个方法,解决上述令人头疼的问题!话不多说,上代码: 1 /** 2 * 3 * @param {number|string} num 需要处理的数字 4 * @pa…
本文主要实现:根据el-table表格数据自动生成表头筛选条件的方法,可根据表格数据动态调整. el-table表格的表头增加筛选功能,大家平时都是怎么实现的呢?先看看官方文档的例子: 1 <template> 2 <el-button @click="resetDateFilter">清除日期过滤器</el-button> 3 <el-button @click="clearFilter">清除所有过滤器</e…
上一篇文章,已经大致了解脚手架是什么以及脚手架是如何工作的.接下来,稍微深入一下脚手架的工作过程(以vue-cli为例).首先抛出3个问题: 1.明明全局安装的是@vue/cli,最后执行的命令却是vue? 2.全局安装@vue/cli时发生了什么? 3.执行vue命令时发生了什么,为什么vue指向某个文件,我们却可以直接通过vue命令执行它? 弄清楚这3个问题,基本上对脚手架的原理已经有个大体的认识,文章最后会详解自定义npm命令哦~ 首先,第一个问题为什么安装的是@vue/cli,执行的命令…
一名优秀的前端工程师必备技能之一就是要会性能监控,并且能相应的进行性能优化.最近,有需求将项目做一些优化,提升用户的体验.看了一下项目并没有开启gzip,于是着手实现gzip压缩,下面就是具体的实践过程. 我们在打开网站时,会加载各种资源文件,如js.css.html等等,如果这些文件较大的话,下载耗时过长,打开网页就会比较慢,用户体验不好.此时,可以采用gzip,可以大幅提高网页加载速度.项目是基于vue2开发的,以下过程只适用于vue2. 首先需要安装插件: 1 npm i -D compr…
组件通信在我们平时开发过程中,特别是在vue和在react中,有着举足轻重的地位.本篇将总结在vue中,组件之间通信的几种方式: props.$emit $parent.$children $attrs.$listeners provide.inject eventBus vuex 本地存储 一.props.$emit单向数据流 father.vue: <template> <div> <div>我是父亲:<input type="button"…
本篇将详细介绍vue组件化之函数式组件,会用到以下api: Vue.component().Vue.extend().$createElement.patch(). 从事vue开发的小伙伴,平时组件化的过程中大多都采用的vue文件+模块化系统的方式吧.例如: import ComponentA from './ComponentA.vue' export default { components: { ComponentA }, // ... } 如果你看过官方文档,了解过vue的组件化,你会发…
引用类型的深拷贝.浅拷贝在前端领域一直是个很重要的知识点,不仅在业务中频繁使用,也是面试官们喜欢考的的知识点之一.本篇将封装引用类型的深拷贝.浅拷贝方法,并解决在封装过程中出现的问题. 一.浅拷贝 浅拷贝一般比较简单,缺点也很明显,引用类型的属性并不是真正的拷贝,而是拷贝的引用地址,改变一个当中的属性值,另一个也跟着变化. 方法封装: /** * 浅拷贝 * @param {*} target * @returns */ export function clone (target) { if (…
前言 本篇主要针对nuxtjs中的一些重要概念整理和代码实现! 在学习vue服务端渲染之前,先搞清楚几个概念: 什么是客户端渲染(CSR) 什么是服务端渲染(SSR) CSR和SSR有什么异同 客户端渲染(CSR):当用户在浏览器中输入网址,打开网页,此时的页面只有样式和一些html代码构成的空壳页面,并没有数据.这就需要我们通过执行js代码,请求相关数据,请求到数据之后,通过模板(vue),将这些数据渲染到页面,最终呈现给用户完整的页面. 服务端渲染(SSR):当用户在浏览器中输入网址,打开网…
平时业务中下载文件方式常见的有俩种: 第一种,直接访问服务器的文件地址,自动下载文件: 第二种 ,服务器返回blob文件流,再对文件流进行处理和下载. 一般小文件适用于第一种下载方案,不占用过多服务器资源,而对于体积庞大的文件,常常使用文件流的方式进行传输,如图: 文件流传输成功后通过代码可以立即发起浏览器下载该文件流: 这种方式也有弊端,在文件流传输过程中,用户无法感知文件流的传输状态(进度),会造成一些困扰(无法确定当前下载操作是否已经生效).针对这种情况,我们可以在页面显示文件流的状态和传…
web workers对于每个前端开发者并不陌生,在mdn中的定义:Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法.线程可以执行任务而不干扰用户界面.此外,他们可以使用XMLHttpRequest执行 I/O  (尽管responseXML和channel属性总是为空).一旦创建, 一个worker 可以将消息发送到创建它的JavaScript代码, 通过将消息发布到该代码指定的事件处理程序(反之亦然). 我的理解:web workers可以为js带来多线程环境,由js…
vue + elementUI项目中,el-cascader级联选择器使用频率非常高,一些基本使用方法可以参考elementUI官方文档,本文主要研究当接口只返回最后一级id时,如何向上找出所有父级数据,并设置组件el-cascader的默认值! 准备测试数据:方位.省.市区级联选择. var list = [ { parent: 0, value: 1, label: '东南', children: [ { parent: 1, value: 2, label: '上海', children:…
 ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动布局外面套一层ScrollView(好low):3.头布局脚布局.有的时候我们用多布局并不能很好的实现,所以头布局跟脚布局就是我们最好的选择了:学过了ListView的话原理很简单,没啥理解的东西,直接贴代码了: 效果图:                   正文部分布局: fragment_cla…
静态内部类可以有静态成员,而非静态类 则不能有静态成员 静态内部类的非静态成员可以访问外部类的静态成员,而不可以访问外部类的非静态成员 非静态方法与对象相关,而静态方法属于类的方法, 总上所述:静态方法和静态类是随着类的加载而加载,而非静态方法需要实例,因此在没有实例的情况下,静态方法是不能调用非静态方法的,…
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                                        非静态对象      拥有属性:                是类共同拥有的                                             是类各对象独立拥有的 内存分配:               内存空间上是固定的 …
× 目录 [1]动态样式 [2]CSS类[3]setAttribute()[4]CSSRule对象添加[5]空样式覆盖[6]CSSRule对象删除 前面的话 我们可以通过计算样式来读取伪元素的样式信息,但是却无法使用javascript来直接操作伪元素,本文以一个需求解决为例,详细介绍脚本化伪元素的6种方法 需求说明 [1]为id=box的div元素添加content="前缀"的:before伪元素 [2]为已经添加:before伪元素的div元素删除伪元素  [注意]由于IE7-浏览…
× 目录 [1]CSSStyleSheet [2]CSSRule 前面的话 关于脚本化CSS,查询样式时,查询的是计算样式:设置单个样式时,设置的是行间样式:设置多个样式时,设置的是CSS类名.脚本化样式表当然也是一种脚本化CSS的技术,虽然不经常使用,但有时却非常有用.下面将详细介绍脚本化样式表的内容 CSSStyleSheet CSSStyleSheet类型表示的是样式表.我们知道,引入CSS一共有3种方式,包括行间样式.内部样式和外部样式.其中,内部样式和外部样式分别通过<style>和…