搜索
首页后端开发C#.Net教程常用的asp.net 技巧总结


vs2005常用快捷键  

调试快捷键

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  
           {…}  

           //避免  
           public class LinkedList  
           {….}

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[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或者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 where T:Customer  
           {}  

           //正确:  
           public interface IcustomerList:Ilist

70. 不要在接口上定义方法相关的约束。
71. 不要在代理上定义约束。
72. 如果一个类或方法提供了泛型和非泛型版本,那么优先选择泛型版本



以上是常用的asp.net 技巧总结的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
提高 Python 代码可读性的五个基本技巧提高 Python 代码可读性的五个基本技巧Apr 12, 2023 pm 08:58 PM

Python 中有许多方法可以帮助我们理解代码的内部工作原理,良好的编程习惯,可以使我们的工作事半功倍!例如,我们最终可能会得到看起来很像下图中的代码。虽然不是最糟糕的,但是,我们需要扩展一些事情,例如:load_las_file 函数中的 f 和 d 代表什么?为什么我们要在 clay 函数中检查结果?这些函数需要什么类型?Floats? DataFrames?在本文中,我们将着重讨论如何通过文档、提示输入和正确的变量名称来提高应用程序/脚本的可读性的五个基本技巧。1. Comments我们可

使用PHP开发直播功能的十个技巧使用PHP开发直播功能的十个技巧May 21, 2023 pm 11:40 PM

随着直播业务的火爆,越来越多的网站和应用开始加入直播这项功能。PHP作为一种流行的服务器端语言,也可以用来开发高效的直播功能。当然,要实现一个稳定、高效的直播功能需要考虑很多问题。下面列出了使用PHP开发直播功能的十个技巧,帮助你更好地实现直播。选择合适的流媒体服务器PHP开发直播功能,首先需要考虑的就是流媒体服务器的选择。有很多流媒体服务器可以选择,比如常

PHP中的多表关联查询技巧PHP中的多表关联查询技巧May 24, 2023 am 10:01 AM

PHP中的多表关联查询技巧关联查询是数据库查询的重要部分,特别是当你需要展示多个相关数据库表内的数据时。在PHP应用程序中,在使用MySQL等数据库时,多表关联查询经常会用到。多表关联的含义是,将一个表中的数据与另一个或多个表中的数据进行比较,在结果中将那些满足要求的行连接起来。在进行多表关联查询时,需要考虑表之间的关系,并使用合适的关联方法。下面介绍几种多

提高Python代码可读性的五个基本技巧提高Python代码可读性的五个基本技巧Apr 11, 2023 pm 09:07 PM

译者 | 赵青窕审校 | 孙淑娟你是否经常回头看看6个月前写的代码,想知道这段代码底是怎么回事?或者从别人手上接手项目,并且不知道从哪里开始?这样的情况对开发者来说是比较常见的。Python中有许多方法可以帮助我们理解代码的内部工作方式,因此当您从头来看代码或者写代码时,应该会更容易地从停止的地方继续下去。在此我给大家举个例子,我们可能会得到如下图所示的代码。这还不是最糟糕的,但有一些事情需要我们去确认,例如:在load_las_file函数中f和d代表什么?为什么我们要在clay函数中检查结果

Python中简单易用的并行加速技巧Python中简单易用的并行加速技巧Apr 12, 2023 pm 02:25 PM

1.简介我们在日常使用Python进行各种数据计算处理任务时,若想要获得明显的计算加速效果,最简单明了的方式就是想办法将默认运行在单个进程上的任务,扩展到使用多进程或多线程的方式执行。而对于我们这些从事数据分析工作的人员而言,以最简单的方式实现等价的加速运算的效果尤为重要,从而避免将时间过多花费在编写程序上。而今天的文章费老师我就来带大家学习如何利用joblib这个非常简单易用的库中的相关功能,来快速实现并行计算加速效果。2.使用joblib进行并行计算作为一个被广泛使用的第三方Python库(

四种Python推导式开发技巧,让你的代码更高效四种Python推导式开发技巧,让你的代码更高效Apr 22, 2023 am 09:40 AM

对于数据科学,Python通常被广泛地用于进行数据的处理和转换,它提供了强大的数据结构处理的函数,使数据处理更加灵活,这里说的“灵活性”是什么意思?这意味着在Python中总是有多种方法来实现相同的结果,我们总是有不同的方法并且需要从中选择易于使用、省时并能更好控制的方法。要掌握所有的这些方法是不可能的。所以这里列出了在处理任何类型的数据时应该知道的4个Python技巧。列表推导式ListComprehension是创建列表的一种优雅且最符合python语言的方法。与for循环和if语句相比,列

Python编程进阶,常用八大技巧!Python编程进阶,常用八大技巧!Apr 18, 2023 am 09:34 AM

整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可能有更好的方法来解决:user_input="Thisnstringhastsomewhitespaces...rn"character_map={ord('n'):'',ord('t'):'',ord('r'):None}user_input.translate(charact

Go语言中的网络爬虫开发技巧Go语言中的网络爬虫开发技巧Jun 02, 2023 am 09:21 AM

近年来,随着网络信息的急剧增长,网络爬虫技术在互联网行业中扮演着越来越重要的角色。其中,Go语言的出现为网络爬虫的开发带来了诸多优势,如高速度、高并发、低内存占用等。本文将介绍一些Go语言中的网络爬虫开发技巧,帮助开发者更快更好地进行网络爬虫项目开发。一、如何选择合适的HTTP客户端在Go语言中,有多种HTTP请求库可供选择,如net/http、GoRequ

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具