随笔分类 - 01-C#
摘要:C#3 几乎所有的新特性都是为LINQ服务的,但他们单独使用也非常有用,接下来我们来简单看看C#3 的几个新特性吧。 一、自动实现的属性 编写由字段直接支持的简单属性,不再显得臃肿不堪。 之前写属性时是大至是这样: private string name; public string Name {
阅读全文
摘要:由浅入深表达式树(完结篇)重磅打造 2018-03-142018-03-14 13:23:06阅读 6140 一个多月之后,由浅入深表达式系列的最后一篇终于要问世了。想对所有关注的朋友说声:“对不起,我来晚了!” 希望最后一篇的内容对得起这一个月时间的等待。在学习完表达式树的创建和遍历之后,我们要利
阅读全文
摘要:由浅入深表达式树(二)遍历表达式树 为什么要学习表达式树?表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。LINQ to SQL就是通过把表达式树翻译成SQL来实现的,所以了解表达树有助于我们更好的理解
阅读全文
摘要:由浅入深表达式树(一)创建表达式树 2018-03-142018-03-14 13:21:58阅读 5010 为什么要学习表达式树?表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。LINQ to SQL就
阅读全文
摘要:引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述
阅读全文
摘要:一、将配置映射成类 1、配置中增加 2、类 3、使用
阅读全文
摘要:我们将讨论类型、对象、线程栈和托管堆在运行时的相互关系,假定有以下两个类定义: internal class Employee { public int GetYearsEmployed() { return 1; } public virtual string GetProgressReport(
阅读全文
摘要:在C#中,所有类型最终都从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法。具体地说,System.Object提供了一组公共实例方法。 一、Equals 如果两个对象具有相同的值,就返回true。 二、GetHashCode 返回对象的值的哈希码。如果某个类型的对象要
阅读全文
摘要:我喜欢将书中的知识看懂后形成个人的理解: 一、你如何理解委托 如果我们不理解决委托,那应该都理解类,那我们就从类角度来看看什么是委托。 在我看来类和委托是同一级别的东西,类它对具体的实例进行了抽象,也就是它确定了实例的基本骨架,而委托是对具体方法的抽象,它定义了具体方法的基本骨架,和类一样都是通过n
阅读全文
摘要:说明: int[]string[]enumstructclass然后接下来会产生实例A和克隆实例B。接着改变B的值,看A的值会不会被改变。 接下我们看main方法 static void Main(string[] args) { Demo(); } public static void Demo(
阅读全文
摘要:一、什么是序列化和反序列化 序列化:序列化是将对象状态转换为可保持或传输的格式的过程,比如转化为二进制、xml、json等的过程。 反序列化:与序列化相对的是反序列化,它将流转换为对象,也就是将在序列化过程中所生成的二进制串、xml、json等转换成数据结构或者对象的过程 二、序列化和反序列化能干什
阅读全文
摘要:这里我们讨论的两个东西:托管堆和垃圾回收器,前者是负责创建对象并控制这些对象的生存周期,后者负责回收这些对象。 一、托管堆分配资源 CLR要求所有的对象都从托管堆分配。进程初始化时,CLR划出一个地址空间区域作为托管堆。CLR还要维护一个指针P,该指针指向下一个对象在堆中的分配位置。 那么我们进一步
阅读全文
摘要:一、初识特性 特性(attribute)是被指定给某一声明的一则附加的声明性信息。 设计类型的时候可以使用各种成员来描述该类型的信息,但有时候我们可能不太愿意将一些附加信息放到类的内部,因为这样,可能会给类型本身的信息描述带来麻烦或误解。我们想为类型、属性、方法及返回值附加额外的信息,这些附加信息可
阅读全文
摘要:我们知道,值类型的变量永远不会为null,但在数据库中的一个列可能允许值为空,但在CLR中没有办法将INT32值表示成null. 为了解决这个问题,CLR中引入了可空值类型,为了理解它是如何工作的,先来看看FCL中定义的system.Nullable<T>结构。 一、可空值类型的代码 public
阅读全文
摘要:关于C#中的类型 在C#中类型分为值类型和引用类型,引用类型和值类型都继承自System.Object类,几乎所有的引用类型都直接从System.Object继承,而值类型具体一点则继承System.Object的子类,即继承System.ValueType。而String类型却有点特别,虽然它属于
阅读全文
摘要:以前在用到接口时,从来没注意到接口分为隐式实现与显示实现。昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习。 通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。费话不说,例子如下: interface IAni
阅读全文
摘要:在C#中,构造器分为实例构造器和类型构造器, 一、实例构造器 构造引用类型的对象时,在调用实例 构造器之前,为对象分配的内存总是归0,没有被构造器显示重写的字段都保证获得0或null的值 在一个类中,如果我们没有显示的定义任何构造器,那么C#编译器将定义一个默认的无参构造器,这个无参构造器会简单的调
阅读全文
摘要:最近在看Jeffrey Richter的CLR Via C#,在看到GetHashCode()方法的时候,有一个地方不是特别明白,就是重写Equals()方法时为什么要把GetHashCode()方法一块重写(不重写也没关系,但是微软会发送一条警告)。在解释这个问题之前需要先把Equals()和Ge
阅读全文
摘要:在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?我们在学习的过程中可能比较过多的会去关注CLR,因为CLR是.NET Framework的核心,但是我要说的是CTS和CLS更为重要,因为他们是CLR的核心。任何编程语言,如果想要在.NET C
阅读全文
摘要:(一)CLR介绍 CLR是一个可以由多编程语言使用的运行时,CLR的核心功能:内存管理,程序集加载,安全性,异常处理,线程同步等等。可以被很多属于微软系列的开发语言使用。 事实上,在运行时,CLR根本不关心开发运用什么语言编写源代码,这意味着选择编程语言的时候,应该选择最容易表达自己意图的语言。只要
阅读全文