.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吗?查询指定节点及其所有父节 ...
随机推荐
- 图论(费用流):BZOJ 4514 [Sdoi2016]数字配对
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 820 Solved: 345[Submit][Status ...
- 201512读书分享——读《做自己的No.1》“哪一天”是永远不会到来的
在看这本书的同时,最近也看了一部电影叫做<令人怦然心动的人生整理魔法>,讲一个女孩子平常不善收理,然后房间和人生乱七八糟,她总想着“等哪一天有空了就收拾”.但是,最终一句话打醒了——“哪一 ...
- 《精通CSS:高级Web标准解决方案》学习笔记(下)
1. background-position: left center; 两个参数分别是x和y轴方向的position 2. background-position: 10% 20%; 用百分数表示时 ...
- wamp中的httpd.conf文件设置
ServerName localhost 缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者 ...
- expresscalculate
//本程序接受任意含有+.-.*./和()的数值表达式,数值允许带小数,输入以#结束.如:((2.4+3.5)*2-(2+3.5)/2)*(2+3)# #include <stdio.h> ...
- Python判断上传文件类型
在开发上传服务时,经常需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,非常实用. 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 卸载Symantec Endpoint Protection, 无需password的卸载方法
近期一次偶然的机会, 被人装了个Symantec在电脑上, 搞得各种报警, 验证, 烦死. 然后就自然而然的想卸载掉这个该死的杀毒软件, 没想到这个杀毒软件竟然还是个流氓杀毒软件, 卸载还须要pass ...
- android圆角View实现及不同版本这间的兼容
在做我们自己的APP的时候,为了让APP看起来更加的好看,我们就需要将我们的自己的View做成圆角的,毕竟主流也是将很多东西做成圆角,和苹果的外观看起来差不多,看起来也还不错. 要将一个View做成圆 ...
- Jquery中的事件绑定$("#btn").bind("click",function(){ })
Jquery中的事件绑定:$("#btn").bind("click",function(){ }) 由于每次都这么调用太麻烦,所以jquery就用$(&qu ...
- [转] GCC __builtin_expect的作用
http://blog.csdn.net/shuimuniao/article/details/8017971 将流水线引入cpu,可以提高cpu的效率.更简单的说,让cpu可以预先取出下一条指令,可 ...