.NET,你真的 知道了吗
搞清自己是干什么的
有人问你是做什么的,回答是:"我是做,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,你真的 知道了吗的更多相关文章
- App你真的需要么
随着智能手机.移动路联网的普及,APP火的一塌糊涂,APP应用可谓五花八门,街上经常看到各种推广:扫码安装送东西,送优惠券.仿佛一夜之间一个企业没有自己的APP就跟不上时代了. 有时我在想:APP,你 ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- 你真的会玩SQL吗?之逻辑查询处理阶段
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- SQL Server中SELECT会真的阻塞SELECT吗?
在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...
- 您真的理解了SQLSERVER的日志链了吗?
您真的理解了SQLSERVER的日志链了吗? 先感谢宋沄剑给本人指点迷津,还有郭忠辉童鞋今天在QQ群里抛出的问题 这个问题跟宋沄剑讨论了三天,再次感谢宋沄剑 一直以来,SQLSERVER提供了一个非常 ...
- 你真的会玩SQL吗?和平大使 内连接、外连接
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 你真的会玩SQL吗?三范式、数据完整性
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 你真的会玩SQL吗?让人晕头转向的三值逻辑
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 你真的会玩SQL吗?EXISTS和IN之间的区别
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 你真的会玩SQL吗?无处不在的子查询
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
随机推荐
- Remove Duplicates from Sorted List II ——LeetCode
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
- Computer Vision Algorithm Implementations
Participate in Reproducible Research General Image Processing OpenCV (C/C++ code, BSD lic) Image man ...
- Smartdraw世界上最流行的商业绘图软件
Smartdraw 更多图片(5张) SmartDraw是世界上最流行的商业绘图软件.2006 年获美国政府司法部 (U.S. Department of Justice) 专用软件,2007获美国政 ...
- HDOJ(HDU) 2123 An easy problem(简单题...)
Problem Description In this problem you need to make a multiply table of N * N ,just like the sample ...
- bzoj1227 [SDOI2009]虔诚的墓主人(组合公式+离散化+线段树)
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 803 Solved: 372[Submit][Statu ...
- [Locked] 3Sum Smaller
3Sum Smaller Given an array of n integers nums and a target, find the number of index triplets i, j, ...
- Jinja2模版语言自定义filter的使用
Jinja2模版语言,自带有一些filter,能够在前端的模版中控制数据按照相应的方式显示.比如以下两种filter,分别能在前端控制数字的近似精度显示和根据字符串长度补齐: round(value, ...
- SpringMVC 学习笔记(一) Hello World
springMVC概述: Spring MVC 是眼下最主流的MVC 框架之中的一个 Spring MVC 通过一套 MVC 注解.让 POJO 成为处理请 求的控制器,而无须实现不论什么接口. 支持 ...
- [Ruby] LEVEL 2 Methods and Classes
Optional Arguments Set default arguments, when we don't need to call it, we can simply skip it. def ...
- zoj 2112 Dynamic Rankings(主席树&动态第k大)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...