调试快捷键
F6: 生成解决方案
Ctrl+F6: 生成当前项目
F7: 检察代码
Shift+F7: 检察窗体设想器
F5: 启动调试
Ctrl+F5: 最先实行(不调试)
Shift+F5: 住手调试
Ctrl+Shift+F5: 重启调试
F9: 切换断点
Ctrl+F9: 启用/住手断点
Ctrl+Shift+F9: 删除悉数断点
F10: 逐历程
Ctrl+F10: 运转到光标处
F11: 逐语句
编辑快捷键
Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 挪动到下一书签
Ctrl+B,P: 挪动到上一书签
Ctrl+B,C: 消灭悉数标签
Ctrl+I: 渐进式搜刮
Ctrl+Shift+I: 反向渐进式搜刮
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找标记(列出一切查找效果)
Ctrl+Shift+V: 剪贴板轮回
Ctrl+摆布箭头键: 一次可以挪动一个单词
Ctrl+高低箭头键: 转动代码屏幕,但不挪动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐蔽或睁开当前嵌套的折叠状况
Ctrl+M,L: 将一切历程设置为雷同的隐蔽或睁开状况
Ctrl+M,P: 住手纲要显现
Ctrl+E,S: 检察空缺
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 挑选矩形文本
Alt+鼠标左按钮: 挑选矩形文本
Ctrl+Shift+U: 悉数变成大写
Ctrl+U: 悉数变成小写
代码快捷键
Ctrl+J / Ctrl+K,L: 列出成员
Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息
Ctrl+K,I: 疾速信息
Ctrl+E,C / Ctrl+K,C: 诠释选定内容
Ctrl+E,U / Ctrl+K,U: 作废选定诠释内容
Ctrl+K,M: 生成要领存根
Ctrl+K,X: 插进去代码段
Ctrl+K,S: 插进去外侧代码
F12: 转到所挪用历程或变量的定义
窗口快捷键
Ctrl+W,W: 浏览器窗口
Ctrl+W,S: 解决方案管理器
Ctrl+W,C: 类视图
Ctrl+W,E: 毛病列表
Ctrl+W,O: 输出视图
Ctrl+W,P: 属性窗口
Ctrl+W,T: 使命列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 书签窗口
Ctrl+W,U: 文档纲要
Ctrl+D,B: 断点窗口
Ctrl+D,I: 立即窗口
Ctrl+Tab: 运动窗体切换
Ctrl+Shift+N: 新建项目
Ctrl+Shift+O: 翻开项目
Ctrl+Shift+S: 悉数保存
Shift+Alt+C: 新建类
Ctrl+Shift+A: 新建项
3、 变量.ToString()
字符型转换 转为字符串
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16进制)
12345.ToString("p"); //生成 1,234,500.00%
1.9 取中文日期显现——年月日时分
string strY=currentTime.ToString("f"); //不显现秒
1.10 取中文日期显现_年月
string strYM=currentTime.ToString("y");
1.11 取中文日期显现_月日
string strMD=currentTime.ToString("m");
1.12 取中文年月日
string strYMD=currentTime.ToString("D");
1.13 取当前时分,花样为:14:24
string strT=currentTime.ToString("t");
1.14 取当前时刻,花样为:2003-09-23T14:46:48
string strT=currentTime.ToString("s");
1.15 取当前时刻,花样为:2003-09-23 14:48:30Z
string strT=currentTime.ToString("u");
1.16 取当前时刻,花样为:2003-09-23 14:48
string strT=currentTime.ToString("g");
1.17 取当前时刻,花样为:Tue, 23 Sep 2003 14:52:40 GMT
string strT=currentTime.ToString("r");
1.18取得当前时刻 n 天后的日期时刻
DateTime newDay = DateTime.Now.AddDays(100);
字串变量.Replace("子字串","替换为")
字串替换
如:
string str="中国";
str=str.Replace("国","央"); //将国字换为央字
Response.Write(str); //输出效果为“中心”
C#编程范例
养成优越的编码作风是极为必要的,谁也不愿意看到一堆乱七八糟的代码,未来你或许别人在保护的时刻是何等的痛楚,所以,从现在最先,养成优越的编码习气,包括变量定名,诠释,代码缩进....。
1 .应用Pascal的体式格局定义范例、要领名和常量
public class SomeClass { const int DefaultSize=100; public SomeMethod() { } } |
2.关于局部变量和要领的参数运用骆驼定名法
int number; void MyMethod(int someNumber) {} |
3.接口的称号前加上I
interface ImyInterface {…} |
4.在私有成员变量前面加上m_。关于m_背面的变量名运用骆驼定名要领
public class SomeClass { private int m_Number; } |
5.对自定义的属性类加上后缀Attribute
6.对自定义的非常类加上后缀Exception
7.要领的定名运用动词----对象对,比方ShowDialog()
8.有返回值的要领的定名中要有返回值的形貌,比方GetObjectState()
9.运用带有申明性的变量名
a) 防备单字符的变量名,比方I或t等。运用类似于index或temp如许有意义的名字。
b) 关于public或protected范例的变量防备运用匈牙利示意法。
c) 不要缩写单词(比方用num庖代number)。
10.老是运用C#预定义而不要运用System称号空间中的别号,比方:
运用object而不是Object
运用string而不是String
运用int而不是int32
11.在运用泛型的时刻,范例的首字母要大写。当处置惩罚.NET中的Type范例的时刻,保存Type后缀。(C#2.0新特征)
//准确 public class LinkedList<K,T> {…} //防备 public class LinkedList<KeyType,DataType> {….} |
12.运用有意义的名字定义称号空间,比方产品名或许公司名
13.防备经由过程全限定体式格局运用范例称号,运用using关键字。
14.防备在一个称号空间中运用using关键字
15.把一切体系框架供应的称号空间组织到一同,把第三方供应的称号空间放到体系称号空间的下面
using System; using System.Collection.Generic; using System.ComponentModel; using System.Data; using MyCompany; using MyControls; |
16.运用代办推导而不要显式的实例化一个化代办(C#2.0新特征)
delegate void SomeDelegate(); public void SomeMethod() {…} SomeDelegate someDelegate=SomeMethod; |
17.保护严厉的代码缩进。不要运用tabs或非规范的缩进,比方一个空格。引荐的缩进是3到4个空格。
18.在和你的代码缩进处于同一个级别处为该行代码增添诠释。
19.一切的诠释都应当经由过程拼写搜检。诠释中的毛病拼写意味着开发进度的延缓。
20.一切的类成员变量应当被声明在类的顶部,并用一个空行把它们和要领以及属性的声明区离开
public class MyClass { int m_Number; string m_Name; public void SomeMethod1(); public void SomeMethod2(); } |
21.在最靠近一个局部变量被运用的处所声明该局部变量。
22.一个文件名应当可以反应它所对应的类名
23.当运用一个部分类并把该类散布到差别的文件中时,在每个文件名末端都加上该文件完成的部分在类团体中饰演的作用。比方:
// In MyClass.cs public partial class MyClass {…} //In MyClass.Designer.cs public partial class MyClass {…} |
24.老是要把花括号“{”放在新的一行
编码实践:
1. 防备在同一个文件中安排多个类
2. 一个文件应当只向在一个称号空间内定义范例。防备在一个文件中运用多个称号空间
3. 防备在一个文件内写多于500行的代码(机械自动生成的代码除外)
4. 防备写凌驾25行代码的要领
5. 防备写凌驾5个参数的要领。假如要通报多个参数,运用组织。
6. 一行不要凌驾80个字符
7. 不要手动去修正任何机械生成的代码
a) 假如修正了机械生成的代码,修正你的编码体式格局来顺应这个编码规范
b) 只管运用partial classes特征,以进步可保护性。(C#2.0新特征)
8. 防备对那些很直观的内容作诠释。代码自身应当可以诠释其自身的寄义。由可读的变量名和要领名组成的优良代码应当不须要诠释。
9. 诠释应当只申明操纵的一些前提假定、算法的内部信息等内容。
10. 防备对要领举行诠释
a) 运用足够的外部文档对API举行申明
b) 只要对那些其他开发者的提醒信息才有必要放到要领级的诠释中来
11. 除了0和1,相对不要对数值举行硬编码,经由过程声明一个常量来替换该数值
12. 只对那些亘古稳定的数值运用const关键字,比方一周的天数。
13. 防备对只读(read-only)的变量运用const关键字。在这类情况下,直接运用readonly关键字
public class MyClass { public const int DaysInWeek=7; pubic readonly int Number; public MyClass(int someValue) { Number=someValue; } } |
14. 对每个假定举行断言。均匀起来,每5行应有一个断言。
using System.Diagnostics; object GetObject() {…} object someObject=GetObject(); Debug.assert(someObject!=null); |
15. 每一行代码都应当以白盒测试的体式格局举行审读。
16. 只捕获那些你本身可以显式处置惩罚的非常。
17. 假如在catch语句块中须要抛出非常,则只抛出该catch所捕获到的非常(或基于该非常而建立的其他非常),如许可以保护原始毛病地点的客栈位置。
catch(Exception exception) { MessageBox.Show(exception.Message); throw;//或throw exception; } |
18. 防备应用返回值作为函数的毛病代码。
19. 防备自定义非常类。
20. 当自定义非常类的时刻:
a) 让你自定义的非常类从Exception类继续
b) 供应自定义的串行化机制
21. 防备在一个顺序集合(assembly)中定义多个Main()要领。
22. 只把那些相对须要的要领定义成public,而别的的要领定义成internal。
23. 防备friend assemblies,由于这会增添顺序集之间的耦合性。
24. 防备让你的代码依靠于运转在某个特定处所的顺序集。
25. 在application assembly(EXE client assemblies)中最小化代码量。运用类库来包括营业逻辑。
26. 防备显式指定罗列的值
//准确 public enum Color { Red,Green,Blue } //防备 public enum Color { Red=1,Green=2,Blue=3 } |
27. 防备为罗列指定一个范例
//防备 public enum Color:long { Red,Green,Blue } |
28. 关于if语句,总运用一对{}把下面的语句块包括起来,哪怕只要一条语句也是云云。
29. 防备运用三元前提操纵符。
30. 防备应用函数返回的Boolean值作为前提语句。把返回值赋给一个局部变量,然后再检测。
Bool IsEverythingOK() {…} //防备 if(IsEverythingOk()) {…} //准确 bool ok=IsEverythingOK(); if (ok) {…} |
31. 老是运用以零为基数的数组。
32. 老是运用一个for轮回显式的初始化一个援用成员的数组:
public class MyClass {} const int ArraySize=100; MyClass[] array=new MyClass[ArraySize]; For (int index=0;index<array.Length;index++) { array[index]=new MyClass(); } |
33. 运用属性来替换public或protected范例的成员变量。
34. 不要运用继续下来的new操纵符,运用override关键字覆写new的完成。
35. 在一个非密封(non-sealed)类中,老是把那些public和protected的要领定义成virtual。
36. 除非为了和别的言语举行互动,不然毫不要运用不安(unsafe)的代码。
37. 防备显现范例转换。运用as关键字平安的转换到另一个范例。
Dog dog=new GermanShepherd(); GermanShepherd shepherd=dog as GermanShepherd; if (shepherd!=null) {…} |
38. 在挪用一个代办前,老是搜检它是不是为null。
39. 不要供应public的事宜成员变量。改用Event Accessor。
Public class MyPublisher { MyDelegate m_SomeEvent; Public event MyDelegate SomeEvent { add { m_SomeEvent+=value; } remove { m_SomeEvent-=value; } } } |
40. 防备定义事宜处置惩罚代办。运用EventHandler<T>或许GenericEventHandler。
41. 防备显现触发事宜。运用EventsHelper平安的宣布事宜。
42. 老是运用接口。
43. 接口和类中要领和属性的比应当在2:1摆布。
44. 防备只要一个成员的接口。
45. 勤奋保证一个接口有3~5个成员。
46. 不要让一个接口中成员的数目凌驾20,而12则是更加现实的限定。
47. 防备在接口中包括事宜。
48. 当运用抽象类的时刻,供应一个接口。
49. 在类继续组织中暴露接口。
50. 引荐运用显式接口完成。
51. 历来不要假定一个范例支撑某个接口。在运用前老是要讯问一下。
SomeType obj1; ImyInterface obj2; /*Some code to initialize obj1,then:*/ obj2=obj1 as ImyInterface; if(obj2!=null) { obj2.Method1(); } else { //Handle erro in expected interface } |
52. 不要硬编码向用户显现的字符串。要运用资本。
53. 不要硬编码那些能够会随宣布环境变化而变化的字符串,比方数据库衔接字符串。
54. 运用String.Empty庖代””
//防备 string name=””; //准确 string name=String.Empty; |
55. 运用一个长字符串的时刻,运用StringBuilder替换string。
56. 防备在组织中供应要领
a) 参数化的组织函数是勉励运用的
b) 可以重载运转符
57. 当声清楚明了表态成员的时刻,老是要供应一个表态组织函数。
58. 当早绑定(early-binding)能够的时刻就只管不要运用迟绑定(late-binding)。
59. 让你的应用顺序支撑跟踪和日记。
60. 除了要在switch语句块中完成代码跳转,不要运用goto关键字。
61. 总在switch语句的default情况供应一个断言。
int number=SomeMethod(); swith(number) { case 1: trace.WriteLine(“Case 1:”) break; case 2: trace.Writeline(“Case 2:”); break; default: debug.Assert(false); break; } |
62. 除了在一个组织函数中挪用别的的组织函数以外,不要运用this关键字。
//Example of proper use of ‘this’ public class MyClass { public MyClass(string message) { } public MyClass():this(“Hello”) { } } |
63. 不要运用base关键字接见基类的成员,除非你在挪用一个基类组织函数的时刻要决定一个子类的称号争执
//Example of proper use of ‘base’ public class Dog { public Dog(string name) { } virtual public void Bark(int howlong) { } } public class GermanShepherd:Dog { public GermanShepherd(string name):base(name) { } override public void Bark(int howLong) { base.Bark(howLong) } } |
64. 不要运用GC.AddMemoryPressure()
65. 不要依靠HandleCollector
66. 基于《Programming .NET components》2/e中第四章的内容完成Disponse()和Finalize()要领。
67. 老是在unchecked状况下运转代码(出于机能的缘由),然则为了防备溢出或下溢操纵,要坚决地运用checked形式。
Int CalcPower(int number,int power) { int result=1; for (int count=1;count<=power;count++) { checked { result*=number; } } return result; } |
68. 运用前提要领来庖代显式举行要领挪用消除的代码(#if…#endif)
public class MyClass { [Conditional(“MySpecialCondition”)] public void MyMethod() {} } |
69. 不要在泛型接口中定义束缚。接口级的束缚一般可以应用强范例来替换。
Public class Customer {} //防备: public interface Ilist<T> where T:Customer {} //准确: public interface IcustomerList:Ilist<Customer> |
70. 不要在接口上定义要领相干的束缚。
71. 不要在代办上定义束缚。
72. 假如一个类或要领供应了泛型和非泛型版本,那末优先挑选泛型版本
以上就是经常运用的asp.net 技能总结的细致内容,更多请关注ki4网别的相干文章!