搞清自己是干什么的

    有人问你是做什么的,回答是:"我是做,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. 【动态规划】【二分】【最长上升子序列】HDU 5773 The All-purpose Zero

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5773 题目大意: T组数据,n个数(n<=100000),求最长上升子序列长度(0可以替代任何 ...

  2. HDOJ(HDU) 2401 Baskets of Gold Coins(数列、)

    Problem Description You are given N baskets of gold coins. The baskets are numbered from 1 to N. In ...

  3. 动态规划——A 最大子段和

    A - 最大子段和 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  4. ARM启动流程

    S3C2440支持两种启动方式:norflash启动和nandflash启动. 一.norflash启动 NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用 ...

  5. entityframework分布式事务中遇到的 “与基础事务管理器的通信失败”的解决方法

    首先是ef的多数据库操作实现事务的方法 public int AddDifferenceDB(userinfo1 user1, userinfo user) { ; using (var test2D ...

  6. 继续畅通工程(kruskal prim)

    kruskal算法   #include <cstdio > #include <algorithm> using namespace std; const int MaxSi ...

  7. 《A First Course in Mathematical Modeling》-chaper1-差分方程建模

    从今天开始笔者将通过这个专栏可是对“数学建模”的学习.其实对于“数学建模”自身的内涵或者意义并不需要太多的阐释,下图简洁明了的阐释了数学建模的意义. 其实数学建模本身可以看成换一种角度去解读数学,将我 ...

  8. CentOS7 盒盖休眠

    https://wiki.archlinux.org/index.php/Power_management_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) CentOS ...

  9. motan源码分析九:开关

    在前面的文章中,我们已经发现了开关的踪影,例如cluster,motan支持多个cluster,当前的cluster因为开关关闭的情况下,就会使用下一个cluster. 1.开关相关的类和接口主要都在 ...

  10. pat 1060. Are They Equal (25)

    题目意思直接,要求将两个数转为科学计数法表示,然后比较是否相同  不过有精度要求 /* test 6 3 0.00 00.00 test 3 3 0.1 0.001 0.001=0.1*10^-2 p ...