搞清自己是干什么的

    有人问你是做什么的,回答是:"我是做,NET开发的",有的人也会问:"那.NER.是什么?"刚开始我认为是一个开打工具,后认为是一个平台,一个软件环境.

    现在窝火说:.NET是一个概念,是一种构想,或者说是微软的一个梦想.

  .NET 几个特性

    一次编译,到处运行. 首先要说的就是.NET Framework的平台无关性.

    编程语言不再是面试的瓶颈.

    自动内存管理,让我们放心编程. 

    基类库---.NETd开发宝藏.

  变量

    变量代表存储地址.

  常量

    在变量前加上关键字const,就可以指定为常量.

流程控制

   条件语句

     if语句,switch语句

   循环语句

    for循环,whlie循环,do...while循环,foreach循环.

   跳转语句

    goto语句,break语句,continue语句,return语句.

int32.TrParse().int32.Parse().ConvertToint32()比较

  >ConvertToint32()在null是不抛出异常,二十返回零.

  >int32.Parse()会抛出异常

  >int32.TrParse()不会抛出异常,会返回true或false来说明解析是否成功.如果解析错误,则out调用方将会得到零值.

.NET面向对象之门

    继承,封装,多态

  隐藏基类成员C#使用new修饰符来实现隐藏基类成员,

  new有三种实现:    1.隐藏父类成员    2.实例化    3.泛型

密封类和密封方法(sealed )

  sealed 不能继承  

interface   方法不能实现 继承子类全部重写
adstrace 不能实例化 方法能实现 继承子类选择性重写

委托---"任务书"

  简单的理解委托就如一个"中介"

什么是委托,为什么要使用委托

  我正在埋头苦写程序,突然想喝水,但是又不想自己去掉杯水而打断自己的思路,于是我就想让女朋友去给我倒水。她去给我倒水,

首先我得让她知道我想让她干什么,通知她之后我可以继续写自己的程序,而倒水的工作就交给了她。这样的过程就相当于一个委托。

  在程序过程中,当程序正在处理某个事件的时候,我需要另外的程序代码去辅助处理一些事情,于是委托另一个程序模块去处理,

而委托就可以达到这种目的,我可以利用委托通知另外的程序模块,该去调用哪个函数方法。委托其实就起到了这样一个作用,

将函数签名传递到了另一个函数中。或许这样讲还是有些模糊,看看后面的具体实例。

委托的定义

delegateint Add(int num1,int num2);
delegatevoid ConvertNum(string result);

  上面是定义两个委托的例子,其实很简单。声明一个委托使用delegate关键字,上面分别是定义的带返回值的委托和不带返回值的委托,

两个委托都有传递参数,当然也可以不传递参数。其实委托也是一个类,委托派生为System.MulticastDelegate,而System.MulticastDelegate

又继承System.Delegate,如果你知道这个也就明白委托其实是一个特殊的类。

委托总结

 委托是一种特殊的对象类型,它定义了方法的类型,使的可以将方法当做另一个方法的参数来进行传递.

反射----"解剖"

  简单理解反射就是一把手术刀.

反射就是把一个类(不管你是已知还是未知),可以反射出它的属性、方法、变量等等。
比如一个类
public class A
{
...
}
我们并不知道它里面有些什么,那么我们可以使用反射了。
Type t = A.GetType();
这是类A的Type实例
然后,通过GetProperties()这个方法,可以找出所有类A里面的“属性”,通过GetMethod()这个方法,可以找出所有类A里面的“方法”!
例如:PropertyInfo[] proInfo = t.GetProperties(); //找出所有的属性,这是一个集合。
var methodInfo = t.GetMethod(new Type[] { }); //找到无参数的构造方法
找出之后,你还可以调用,比如属性取值,你可以再继续使用proInfo[0].GetValue(...)这个方法来取第0号属性的值。
调用方法是使用Invoke()方法来调用,比如调用这个类的构造方法:object a = methodInfo.Invoke(); 这样就得到了类A的实例。
还可以找Attribute,和判断类型。
还有更多的东西,总之语言中的所有东西,都可以和反射一一对应。详细你参考微软的MSDN,关于System.Reflection命名空间。

.NET开发的几把小刀

  @符号妙用

一 字符串中的用法

  字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。

  @只能对字符串常量作用。

  1.用于文件路径

以下是引用片段:
  string s_FilePath ="C:\\Program Files\\Microsoft.NET\\test.txt";

  相当于

以下是引用片段:
  string s_FilePath =@"C:\Program Files\Microsoft.NET\test.txt";

  2.用@表示的字符串能够跨越数行。用于在CS中写JS或SQL代码比较方便。

以下是引用片段:
  string s_MultiRows = @"Line1 
  Line2 
  Line3"; 
  string s_JavaScript = @" 
  ";

  二 标识符中的用法

  在 C# 规范中, @ 可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符。

  如

以下是引用片段:
  class @class 
  { 
  public static void @static(bool @bool) { 
  if (@bool) 
  System.Console.WriteLine("true"); 
  else 
  System.Console.WriteLine("false"); 
  } 
  } 
  class Class1 
  { 
  static void M() { 
  clu0061ss.stu0061tic(true); 
  } 
  }

  注意,@ 虽然出现在标识符中,但不作为标识符本身的一部分。

  因此,以上示例,定义了一个名为 class 的类,并包含一个名为 static 的方法,以及一个参数名为了 bool 的形参。

  这样,对于跨语言的移植带来了便利。因为,某个单词在 C# 中作为保留关键字,但是在其他语言中也许不是。

#define

使用 #define 定义符号。 当您将符号用作传递给 #if 指令的表达式时,此表达式的计算结果为 true,如下例所示:

# define DEBUG

符号可用于指定编译的条件。 可以使用 #if 或 #elif 来测试符号。 还可以使用 conditional 特性执行条件编译。

可以定义符号,但是无法对符号赋值。 #define 指令必须在使用任何不是预处理器指令的指令之前出现在文件中。

也可以用 /define 编译器选项来定义符号。 可以用 #undef 来取消定义符号。

用 /define 或 #define 定义的符号与具有同一名称的变量不冲突。 即,不应将变量名传递到预处理器指令,并且只能用预处理器指令计算符号。

用 #define 创建的符号范围是在其中定义该符号的文件。

如以下示例所示,您必须将 #define 指令置于文件的顶部。

C#

#define DEBUG
//#define TRACE
#undef TRACE using System; public class TestDefine
{
static void Main()
{
#if (DEBUG)
Console.WriteLine("Debugging is enabled.");
#endif #if (TRACE)
Console.WriteLine("Tracing is enabled.");
#endif
}
}
// Output:
// Debugging is enabled.

  

.NET,你真的 知道了吗的更多相关文章

  1. App你真的需要么

    随着智能手机.移动路联网的普及,APP火的一塌糊涂,APP应用可谓五花八门,街上经常看到各种推广:扫码安装送东西,送优惠券.仿佛一夜之间一个企业没有自己的APP就跟不上时代了. 有时我在想:APP,你 ...

  2. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  3. 你真的会玩SQL吗?之逻辑查询处理阶段

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  4. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  5. 您真的理解了SQLSERVER的日志链了吗?

    您真的理解了SQLSERVER的日志链了吗? 先感谢宋沄剑给本人指点迷津,还有郭忠辉童鞋今天在QQ群里抛出的问题 这个问题跟宋沄剑讨论了三天,再次感谢宋沄剑 一直以来,SQLSERVER提供了一个非常 ...

  6. 你真的会玩SQL吗?和平大使 内连接、外连接

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. 你真的会玩SQL吗?三范式、数据完整性

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  8. 你真的会玩SQL吗?让人晕头转向的三值逻辑

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  9. 你真的会玩SQL吗?EXISTS和IN之间的区别

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  10. 你真的会玩SQL吗?无处不在的子查询

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

随机推荐

  1. 【效率】FIND

    文档 HTML Flash CSS 字体 命名颜色 工具 IMG

  2. 嵌入式 linux 查看内存

    在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux下查看内存使用情况的free命令: [root@scs- ...

  3. (转载)php curl_init函数用法

    (转载)http://blog.sina.com.cn/s/blog_640738130100tsig.html 使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所 ...

  4. 安装robotframework时提示权限受限

    mba下准备装robotframework,python已默认装好,按照如下的教程继续按照robotframework,发现会提示权限受限,如图. 第二步: 安装 robotframework下载地址 ...

  5. Validate Binary Search Tree——LeetCode

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  6. HDOJ(HDU) 2304 Electrical Outlets(求和、、)

    Problem Description Roy has just moved into a new apartment. Well, actually the apartment itself is ...

  7. 常考的算法及Java知识总结

    算法 1 字符串模式匹配问题 2 排列组合问题 3 查找排序问题 数据结构 B树(B,B*,B+,红黑树)和二叉树的区别,MAP,hashmap, JAVA: 线程sleep,wait,wake(), ...

  8. Eclipse 在线汉化

    1. 打开Eclipse  , 进入菜单中 Help-->Install new Software.. 2. 到Eclipse 官网找到语言包地址,http://www.eclipse.org/ ...

  9. composer安装第三方库

    生成composer.json 首先需要安装composer,composer -v出现如下,则表明安装成功. 编写composer.json { "name": "ww ...

  10. solr5.3.1 集群服务搭建

    转http://978538.blog.51cto.com/968538/1710442 一. 安装部署 zookeeper集群部署: 节点: 10.1.12.51:2181      node1 1 ...