11 2013 档案
.NET面试题目
摘要:用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层 数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问 业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关 表示层:是系统的UI部分,负责使用者与整个系统的交互。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。分层式结构究竟其优势何在? 1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5 阅读全文
posted @ 2013-11-27 16:16 zzunstu 阅读(319) 评论(0) 推荐(0)
8Queue
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _8Queen{ class Program { const int NCOUNT = 8; static int[] QueenMap = new int[NCOUNT]; static int iCount = 1; /* * 核心函数,放置第N枚皇后(递归) */ static void M... 阅读全文
posted @ 2013-11-22 18:58 zzunstu 阅读(171) 评论(0) 推荐(0)
Encoding
摘要:见下代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Encoding{ class A { public string Mys = string.IsInterned("Hello"); } class Program { static void Main(string[] args) { string[] sarr = new string[]{"a","我"... 阅读全文
posted @ 2013-11-14 22:03 zzunstu 阅读(173) 评论(0) 推荐(0)
string
摘要:string1.一个string表示一个恒定不变的字符序列集合。 string直接继承自System.Object,这使得他成为一个引用类型,也就是说线程的堆栈上不会驻留有任何字符串。 注:直接继承自Object的类型一定是引用类型;所有的值类型都继承自System.ValueType,,但System.ValueType却是一个引用类型(public abstract class ValueType);如下Code:string s=new string("Hello");无法通过编译。但是可以用string s = new string(char[] chars);st 阅读全文
posted @ 2013-11-14 22:02 zzunstu 阅读(139) 评论(0) 推荐(0)
总结C#多线程
摘要:一、C#多线程相关的基本概念进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。静态属性:这个类所有对象所公有的属性,不管你创建了多少个这个类的实例,但是类的静态属性在内存中只有一个。二、C#多线程的优劣优点:可以提高CPU的利 阅读全文
posted @ 2013-11-12 16:47 zzunstu 阅读(246) 评论(0) 推荐(0)
C#中字符串的内存分配与驻留池
摘要:作者:cyoooo7来源:博客园发布时间:2011-07-0516:31阅读:2246次推荐:2原文链接[收藏]摘要:当有多个字符串变量包含了同样的字符串实际值时,CLR可能不会为它们重复地分配内存,而是让它们统统指向同一个字符串对象实例。 刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例。如下:Strings1="Hello";Strings2="Hello";//s2和s1的实际值都是Helloboolsame=(object)s1==(object 阅读全文
posted @ 2013-11-12 15:42 zzunstu 阅读(217) 评论(0) 推荐(0)
进程和线程
摘要:5.1 简介进程(process)是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。当运行.NET程序时,进程还会把被称为CLR的软件层包含到它的内存空间中。上一章曾经对CLR做了详细描述。该软件层是在进程创建期间由运行时宿主载入的(参见4.2.3节)。线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。主线程将执行运行时宿主, 而运行时宿主会负责载入CLR。应用程序 阅读全文
posted @ 2013-11-07 11:48 zzunstu 阅读(396) 评论(0) 推荐(0)
浅析.NET中的引用类型和值类型(下)
摘要:上一篇文 章中简单讲了.NET中值类型和引用类型的区别,并分析了引用类型的内存布局和实现方式,并在开始的例子中简单分析了值类型相较于引用类型的若干优点。在 平常的开发中,很多人一上来就用class,而很少去想到底该用class还是struct。本文详细介绍.NET中的值类型以及在使用中应该注意的问 题。在某些情况下,使用值类型较引用类型可以显著减少内存占用和GC压力,提高程序的执行效率。本文参考《Pro .NET Performance》 《CLR Via C#》和 《Advanced .NET Debugging》,希望对您有帮助。值类型内部实现 和引用类型相比,值类型具有相对简单的内存布局 阅读全文
posted @ 2013-11-05 18:17 zzunstu 阅读(249) 评论(0) 推荐(0)
浅析.NET中的引用类型和值类型(上)
摘要:.NET中的类型分为值类型和引用类型,他们在内存布局,分配,相等性,赋值,存储以及一些其他的特性上有很多不同,这些不同将会直接影响到我们应用程序 的效率。本文视图对.NET 基础类型中的值类型和引用类型在内存中的布局,方法的调用,值类型如何实现接口,以及其他一些细节问题进行一些简要的讨论,文章主要参考《Pro .NET Performance》 和 《Advanced .NET Debugging》 ,希望给大家一点儿帮助。一 简单例子 举一个简单的例子,我们有一个名为Point2D的对象,用来表示二维空间中的坐标,每一个坐标值x,y都用一个short类型表示,整个对象占4个字 节。现在假设我 阅读全文
posted @ 2013-11-05 18:13 zzunstu 阅读(221) 评论(0) 推荐(0)
.Net运行时的相互关系
摘要:阅读目录前言线程堆栈的分配托管堆上对象的分配结束语前言 .Net中的运行时,以及各个类型、对象、线程堆栈以及托管堆之间的关系,在初学者(俺是初学者中的菜鸟 J)看来,有很多是难以理解的东西,俺在看了CLR Via C# 的前几章后,现在将文中的大概意思并加以自己的理解,重现运行时,以及各个关系。希望各位尽量拍砖,多多指出不正确的地方,共同进步。线程堆栈的分配 图1中展示了CLR加载的一个Microsoft Windows进程。在一个进程中,可能会存在多个线程。在创建一个线程时,这个线程会分配到一个1MB大小的堆栈。这个堆栈空间的作用:用于向方法传递 实参,并用于存储在方法内部定义的局部变量.. 阅读全文
posted @ 2013-11-05 17:23 zzunstu 阅读(275) 评论(0) 推荐(0)
C#笔试题
摘要:7Bw技术类面试、笔试题汇总注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系。下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。1、简述private、protected、public、internal修饰符的访问权限。private:私有成员,在类的内部才可以访问,也就是类内部的函数等成员可以访问。protected:保护成员,该类内部和继承类中可以访问。public:公共成 阅读全文
posted @ 2013-11-05 15:06 zzunstu 阅读(1609) 评论(2) 推荐(0)
软件设计师.NET认证考试
摘要:注意事项:用蓝、黑色钢笔答题。保持卷面整洁。得分阅卷人一、单项选择(40分,每小题1分)1.以下标识符中不全是关键字的是()A、caseforintB、whilegotoforeachC、boolclasslongD、thenifchar2.一个C#程序总是调用哪个方法作为开始(入口):()A、MainB、mainC、MAIND、任意一个方法即可3.设“inta=12;”,则执行完语句“a+=a*a;”后,a的值是()A、12B、144C、156D、2884.在类作用域中能够通过直接使用该类的()成员名进行访问。A、私有B、公有C、保护D、任何5.decimal类型和float(double) 阅读全文
posted @ 2013-11-05 15:05 zzunstu 阅读(604) 评论(0) 推荐(0)
引用类型详细剖析
摘要:C#引用类型和值类型的区别——值类型和引用类型在内存中的部署经常听说,并且经常在书上看到:值类型部署在栈上,引用类型部署在托管堆上。实际上并没有这么简单。MSDN上说:托管堆上部署了所有引用类型。这很容易理解。当创建一个应用类型变量时:objectreference=newobject();关键字new将在托管堆上分配内存空间,并返回一个该内存空间的地址。左边的reference位于栈上,是一个引用,存储着一个内存地址;而这个 地址指向的内存(位于托管堆)里存储着其内容(一个System.Object的实例)。下面为了方便,简称引用类型部署在托管推上。再来看值类型。《C#语言规范》上的措辞是“ 阅读全文
posted @ 2013-11-05 14:20 zzunstu 阅读(212) 评论(0) 推荐(0)
string
摘要:在实际的开发过程中,对字符串的操作是经常遇到的,其中涉及到字符串拼接、拆分、比较、替换等操作。C#提供了string类型,String和 StringBuilder两种类来对字符串进行处理。那么string,String,StringBuilder对字符串进行处理有何异同,在实际编 程中,对于不同的字符串操作应该采用哪种方式来提高程序的效率呢?本文将对string,String,StringBuilder进行详细的解释和比 较,最后在编程过程中遇到的常用的字符串处理进行了总结。 首先理解string,String,StringBuilder的概念和区别: string string,ms... 阅读全文
posted @ 2013-11-05 11:52 zzunstu 阅读(565) 评论(0) 推荐(1)
求和:1-2+3-4+……+m
摘要://1. 递归求和 GetValue2(int i)//2. 总结规律求和 GetValue(int i)//3. 判断奇偶求和using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace SumDemo2{ class Program { static int GetValue2(int i) { int flag = 0; if (i == 1) retur... 阅读全文
posted @ 2013-11-04 15:55 zzunstu 阅读(388) 评论(0) 推荐(0)
倒序输出字符串
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2{ class Program { static void ConversString(string str) { if (str.Length == 1) { Console.Write(str); } else ... 阅读全文
posted @ 2013-11-03 19:36 zzunstu 阅读(188) 评论(0) 推荐(0)
Lamdba表达式
摘要:1.匿名方法myTime.Elspsed +=delegate(object source, ElapsedEventArgs e){ Console.WriteLine((source as Timer).Interval);};2.把Lamdba表达式用于匿名方法myTime.Elspsed += (source,e) => Console.WriteLine((source as Timer).Interval);Lamdba表达式由三部分组成:放在括号中的参数列表=>运算符C#语句using System;using System.Collections.Generic;u 阅读全文
posted @ 2013-11-03 18:30 zzunstu 阅读(375) 评论(0) 推荐(0)
扩展方法 extension method
摘要:1.扩展方法可以扩展类型的功能,但无需修改类型本身,甚至可以使用扩展方法扩展不能修改的类型。为了扩展类型的功能,需要通过可以通过该类型的实例调用的方法,为此创建的方法称为扩展方法,他可以带任意数量的参数,返回类型。创建一个非泛型静态类使用扩展方法的语法,给创建的类添加扩展方法;通过扩展类型的一个实例调用扩展方法,与调用扩展类型的其他方法一样;要求如下:方法必须是静态的;方法必须包含一个参数,表示调用扩展方法的类型实例;实例参数必须是为方法定义的第一个参数除了this关键字之外,实例参数不能有其他的修饰符using System;using System.Collections.Generic; 阅读全文
posted @ 2013-11-03 16:44 zzunstu 阅读(537) 评论(0) 推荐(0)
命名参数 named parameter
摘要:C#4.0引入了命名参数,它允许指定要使用哪个参数。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace NamedPara{ public static class WordProcessor { private const bool defaultval = false; public static List GetWords( string sentence, bool cap... 阅读全文
posted @ 2013-11-03 16:07 zzunstu 阅读(396) 评论(0) 推荐(0)
动态查找 dynamic
摘要:一.Dynamic类型C#4引入了dynamic关键字,用于定义变量;dynamic myval;它与var关键字不同,的确存在dynamic类型,所以无需初始化他的值;dynamic类型不同寻常之处是,它仅在编译期间存在,在运行期间会被System.Objcet类型代替,这一点必须记住。无论myval实际包含什么值,这行代码都会编译,但是如果所请求的成员不存在,在执行这行代码的时候会生成一个RuntimeBinderException类型的异常。using System;using System.Collections.Generic;using System.Linq;using Syst 阅读全文
posted @ 2013-11-02 18:39 zzunstu 阅读(272) 评论(0) 推荐(0)
匿名类型anonymous type
摘要:匿名类型: var curry = new { MainIngredient = "lamb", Style = "red", Spiciness = 1 };见以下代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace VarDemo{ public class Curry { public stri... 阅读全文
posted @ 2013-11-02 17:36 zzunstu 阅读(537) 评论(0) 推荐(0)
类型推理 var
摘要:一.varC#是一种强类型化的语言,这表示每个变量都有固定的类型,只能用于接受该类型的代码中。int myvar = 5;C#3.0引入了新关键字var,它可以代替前面的代码中的type:var myvar = 5;myvar是int类型的变量,而不是var类型的变量,这一点非常的重要,使用var时,并不是声明了一个没有类型的变量,也不是声明了一个类型可以变化的变量,否则C#就不在是强类型化语言了。如果编译器不能确定用var声明的变量类型,代码就不会通过编译,因此,在用var声明变量时,必须同时初始化该变量,因为如果没有初始化,编译器就不能确定该变量的类型。var关键字还可以通过数组初始化器来 阅读全文
posted @ 2013-11-02 16:58 zzunstu 阅读(351) 评论(0) 推荐(0)
对象初始化器
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CtorDemo{ public class Curry { //也可以没有构造函数 public Curry() { } public string MainIngredient { get; set; } public string Style ... 阅读全文
posted @ 2013-11-02 16:17 zzunstu 阅读(169) 评论(0) 推荐(0)
const和readonly
摘要:一 常量与字段(一) 常量 常量总是被视为静态成员,而不是实例成员。定义常量将导致创建元 数据。代码引用一个常量时,编译器会在定义常量的程序集的元数据中查找该符号,提取常量的值,并将值嵌入IL中。由于常量的值直接嵌入IL,所以在运行时 不需要为常量分配任何内存。此外,不能获取常量的地址,也不能以传递引用的方式传递常量。这些限制意味着,没有很好的跨程序集版本控制特性。因此,只有在 确定一个符号的值从不变化时,才应该使用。如果希望在运行时从一个程序集中提取一个程序集中的值,那么不应该使用常量,而应该使用 readonly 字段。(二) 字段 CLR支持类型字段和实例字段。对于类型字段,用于容纳.. 阅读全文
posted @ 2013-11-01 16:51 zzunstu 阅读(166) 评论(0) 推荐(0)