文章分类 - c# 基础
摘要:http://www.cnblogs.com/mcjtcnblog/archive/2009/01/08/1372203.html在.NET在,我们经常使用委托,委托的作用不必多说,在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型,再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托,.NET3.0给我们带来了Lambda,这一切使得委托的定义和使用变得简单起来。下面的例子中的委托都使用了Lambda表达式。一.Action系列的泛型委托Action系列的委托定义的是没有返回值(返回值为void)的委托。它有多个版本包
阅读全文
摘要:本文转自:http://www.cnblogs.com/instance/archive/2011/05/22/2053541.html我们知道,在匿名方法或者lambda中,可以访问或者修改该匿的定义范围内的变量。例如:int num = 1; Func<int> incNum = () => ++num;其中lambda表达式使用了在其外部定义的变量num。我们可以认为该段lambda语句块构成了一个闭包,而这个闭包捕获了外部变量num。好了,不说那么多让人看着难受的定义套话了。我们进入正题,看看在C#中变量是如何被捕获的。来看一个例子:public Func<St
阅读全文
摘要:上一篇文章 讲到把实体类中需要实现延迟加载的属性声明为virtual,然后继承实体类做一个子类,在子类里面实现该属性,配合使用委托来实现比较完美的延迟加载(原本的”模型层“依旧保持在最底层用于贯穿三层结构,同时又可以实现在实体类的属性里面访问到比他高层的”数据访问层“)。文章的最后依旧出现杯具,原因是 在对模型的属性实现延迟加载之前,这个属性可能由于我们业务的需要,它并不单单是作为一个存储和读取的功能使用,而是在其get或者set的访问器中都包 含这或许复杂或许简单的逻辑代码。 举例:考虑一下这个情景,我们有一个叫做任务单的实体类,其中有两个属性,一个叫做”任务名”,一个叫做“发布时间”,现在
阅读全文
摘要:之前的文章“浅谈C#中的延迟加载(1)——善用委托”中介绍了三层结构中在Model层对实体类的属性实现延迟加载的方法,该方法利用C#中的委托来实现,最后虽然延迟加载的目的得以实现,但是给客户端(例如UI层)暴露了不必要的属性(一个委托对象,我使用了泛型的Fun类来实现)。这篇文章介绍一种方法来隐藏这个属性,同时又可以达到延迟加载的目的,更重要的是这一切都是在之前的基础上来完成的,不需要改变原来使用到实体类的地方的代码。 按照惯例,我们考虑一下想要我们的代码达到什么效果:首先在Model.Acticle(文章实体类)中的Category属性和原来一样,只在需要的 时候通过调用委托来获取文章所属分
阅读全文
摘要:很久以前就听过“延时加载”这个东西,不过没有理解是什么意思,现在算是了解一二了,写点文章作为读书笔记,把自己的想法记录一下,希望对初学者帮助,不管是初学者或者高手如果发现文章那里写得不好或者有更好的思路和做法记得告诉我哦^^。文章打算写成两三篇,这个是第一篇。 在三层结构中我们通常会使用多一个叫做“模型层”的东西,这一层中最主要做的事情是把数据库中的表 (或者其他数据源,例如xml或者自己定义的一种数据格式)转成对应的类,例如有一个文章表,这时候在这一层就会有一个文章类;文章类的属性对应着文章表的列,例如文章标题属性对应文章标题列。 实体类和数据表一一对应是最简单的情况,这时候实体类和实体类.
阅读全文
摘要:1:利用反射实现 public T DeepCopy<T>(T obj) { object retval= Activator.CreateInstance(typeof(T)); PropertyInfo[] pis = typeof(T).GetProperties(); foreach (PropertyInfo pi in pis) { try{pi.SetValue(retval, pi.GetValue(obj, null), null); } catch{ } } return (T)retval; }2:利用xml序列化和反序列化实现 public T DeepCo
阅读全文
摘要:1、声明关于事件的委托;2、声明事件;3、编写触发事件的函数;4、创建事件处理程序;5、注册事件处理程序;6、在适当的条件下触发事件。现在我们来编写一个自定义事件的程序。情景如下:主人养了一条忠实的看门狗,晚上主人睡觉的时候,狗负责看守房子。一旦有小偷进来,狗就发出一个Alarm事件,主人接到Alarm事件后就会采取相应的行动。假设小偷于2009年元旦午夜时分到达。//事件发送者 class Dog { //1.声明关于事件的委托; public delegate void AlarmEventHandler(object sender, EventAr...
阅读全文
摘要:注:本文部份资料来自网络,如有侵权,请与我联系,我会在第一时间声明引用或将其删除! 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识(学而时习之嘛),总结了25个问题:1.静态成员和非静态成员的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal 修饰符起什么作用?6.sealed 修饰符是干什么的?7.override 和 overload 的区别?8.什么是索引指示器?9.new 修饰符是起什么作用?10.this 关键字的含义?11.可
阅读全文
摘要:来源: Flashlm专栏 - CSDNBlog 1, 请你说说.NET中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数准确的说:结构不能包含显式的无参数构造函数,因为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。这句话示例如下: public class A {..
阅读全文
摘要:using System;using System.Text.RegularExpressions;namespace bobomousecom.crm{ /**/ /**/ /**/ /// <summary> /// Regexlib 的摘要说明。 /// </summary> public class Regexlib { public Regexlib() { // // TODO: 在此处添加构造函数逻辑 // } //搜索输入字符串并返回所有 href=“”值 //string DumpHrefs(String inputString) //{ // Reg
阅读全文
摘要:C#中Property和Attribute的区别l Property就是访问字段(成员变量,Field)提供的一种方式(set/get)l Property是C#中引入的一种语言特性,把C++中的一些编程技巧上升到语法的地位。这种特性就是把类数据成员声明为私有的,而提供公有的方法实现对他们的访问。l Property可以说是一个面向对象的概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。比如:publicclassRobot { privatestringname="";//字段:Field pub
阅读全文
摘要:51.栈和堆是存放变量与常量的地方,它们有截然不同的生命期语义。52.栈是用来存放局部变量和参数的内存块,当一个函数被调用和退出时,栈就会逻辑增长和减小,考虑下面的函数: static int Factorial( int n ) { if ( 0 == n ) { return 1; }7 return ( n * Factorial(n-1) ); }这是一个递归函数,也就说它会自己调用自己。每次函数被调用时,就会有一个新的int参数被分配在栈上,而当函数退出时,int参数被释放。53.堆是用来存放对象(也就是引用类型的实例)的地方。无论何...
阅读全文
摘要:最近开始学习Unity开发,由于以前一直都是从事C/C++开发,所以对于Unity的脚本语言方面,选择了最相近的C#。由于从头开始学习C#是没有必要的,所以就恶补了一下必须的C#知识^-^1.C#中使用//(双斜杠)来表明本行的剩余部分代表注释。2.C#中语句是按顺序执行的,每条语句以分号结尾。3.C#中的函数执行一系列语句的行为,称为语句块---一对大括号中包含0条或多条语句。4.一个函数可以通过定义参数来从调用者处接受输入数据,也可以通过定义返回类型来输出数据给调用者。5.Main函数定义为执行程序的默认入口点。Main函数可以不返回任何值,也可以返回一个整数给执行程序环境。Main函数也
阅读全文
摘要:http://www.cnblogs.com/nieqq/archive/2010/10/25/1860628.html今天在使用foreach循环遍历list集合时,出现Collection was modified; enumeration operation may not execute.这个错误,查了半天才发现是当想要修改list集合时,不能使用foreach,因为foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等),所以要写for循环。遍历map(Dictionary)表也会存在这个问题,解决办法就是在foreach搜索到合适的内容和break,然后进行修改。D
阅读全文
摘要:原文:http://www.cnblogs.com/Yjianyong/archive/2010/08/05/1792774.html第一章 C#与.NET框架 1、简述什么是CLR? 答:公共语言运行时,它负责管理用.NET库开发的所有应用程序的执行。 2、简述什么是FCL? 答:Framework Class Library.NET框架类库集 3、简述什么是CLS和CTS 答: CLS(通用语言运行规范)、CTS(通用类型系统)。 4、简述什么是JIT? 答:即时编译。 5、简述C#程序编译运行的全过程。 答:(1)把源代码编译为Microsoft中间语言(IL)。(2)CLR把IL编译为
阅读全文
摘要:.NET Framework 使VB.NET真正具有了面向对象的功能,并且还引入了一种完全面向对象的语言C#。通过使用这些语言,用户可以创建模拟实际商业环境的健壮的事件驱动的应用程序。例如,在现实世界中,操作人员通过对事件做出响应来交互。当某个操作人员执行操作并触发事件后,另一个操作人员会根据这个事件执行相应的操作,这就形成了一个对话或场景。这些操作相互关联,但由相互独立的操作人员执行。为了反映现实世界,面向对象的程序需要这样的机制:在保持对象之间交互能力的同时允许对象实例之间相互独立。事件和委托就提供了这样的一种机制。委托图 4‑1 委托委托是引用类型,这与类和接口相似。用户可以声明委托类型
阅读全文
摘要:C# @符号的多种使用方法1.限定字符串 用@ 符号加在字符串前面表示其中的转义字符“不”被处理。 如果我们写一个文件的路径,例如"D:/文本文件"路径下的text.txt文件,不加@符号的话写法如下: stringfileName="D://文本文件//text.txt"; 如果使用@符号就会比较简单: stringfileName=@"D:/文本文件/text.txt"; 2.让字符串跨行 有时候一个字符串写在一行中会很长(比如SQL语句),不使用@符号,一种写法是这样的: string strSQL="SELECT *
阅读全文
摘要:类中的static成员:一、出现原因及作用: 1、需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务。 2、同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。 类的static成员满足了上述的要求,因为它具有如下特征:有独立的存储区,属于整个类。二、注意: 1、对于静态的数据成员,连接器会保证它拥有一个单一的外部定义。静态数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。消除时的顺序是初始化的反顺序。 2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据...
阅读全文
浙公网安备 33010602011771号