概述
1. 如果一个字符串是由多个字符串拼接(如"hello"+"world")而成,建议使用string.Format函数实现同样功能,这样不仅可读性高,而且效率也高(特别是在组合SQL语句时,使用此方法更有利于SQL的阅读),比如下列代码:
string msg = "rn---------Log Time:" + System.DateTime.Now.ToString() + "--------rn" + text;
换成
string msg = string.Format("rn---------Log Time:{0}--------rn{1}", System.DateTime.Now.ToString(), text);
string xx = string.Format("Select * From Test Where Id={0}", 1);
好一点
关于此用法,我们还可以在StringBuilder变量中用得到,比如以下语句:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendFormat("Exception is {0}", ex.ToString());
2. 枚举变量的声明,声明变量之后可加冒号,也可不加,如果枚举变量类型不多,可以指定成员变量类型为byte,可以节省存储空间(不过这个意义一般,不是很大)
public enum OperateType : byte
{
Add,
Modify,
Delete,
Unknown
};
3. 错误日志记录,为了防止在程序运行期间抛出未在程序中处理的错误,可在程序入口处(即main函数体中)加入以下代码来记录具体出错日志
//-----------处理应用程序中未捕获的错误,记录到日志-------------
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//-------------------------------------------------------------
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string errMsg = string.Format("Application.ThreadException Occurs:rn{0}", e.Exception.ToString());
Utility.LogMsg.WriteLogToApplicationFolderByMonth(errMsg);
//throw new NotImplementedException();
}
这样可以把运行期间未在程序中处理的错误全部记录下来,以备调试可用
4.单件模式的使用,很多时候我们需要限定类只有一个实例,这时我们可以考虑使用单件模式来实限此功能,比如我们在一般应用程序中,必须要限定某个窗体只能打开一个,不允许有多个实例,可以使用下面方法
private static MDIMainForm _instance;
public static MDIMainForm Instance()
{
if (_instance == null)
{
_instance = new MDIMainForm();
}
return _instance;
}
然后把构造函数定义为私有的,不允许直接调用构造函数直接实例化,如下所示
private MDIMainForm()
{
InitializeComponent();
}
4. 递归算法,项目中有一个无限分类的树,需要穷举出树的所有结点,因为不能确定树的层数(也不允许限定层数,因为可以是N层),想了很多方法都不行,最后才想到使用递归,实现起来容易多了,当然我们可以根据这个算法解决很多类似问题,解决方案可参考
#region 无限分类实现(使用递归方法实现)
private void BindToTreeView(int partentID, TreeNode node)
{
string loadedItem = string.Empty; //已加载条目
DataRow[] drs = dtClass.Select("ParentID=" + partentID);
foreach (DataRow dr in drs)
{
string rowTag = dr["Class_ID"].ToString().Trim();
if (loadedItem.Contains(rowTag)) continue;
loadedItem += rowTag;
string nodeItemName = dr["Name"].ToString().Trim();
TreeNode subNode = new TreeNode(nodeItemName);
subNode.Tag = dr["Class_ID"].ToString().Trim();
subNode.ToolTipText = dr["Description"].ToString().Trim();
if (node == null)
{
this.treeViewClass.Nodes.Add(subNode);
}
else
{
node.Nodes.Add(subNode);
}
if (dtClass.Select("ParentID=" + dr["Class_ID"].ToString()).Length > 0)
{
BindToTreeView(int.Parse(dr["Class_ID"].ToString()), subNode);
}
}
}
#endregion
转载于:https://www.cnblogs.com/chenzz/archive/2007/11/19/964919.html
最后
以上就是俊逸刺猬为你收集整理的项目心得(代码篇)的全部内容,希望文章能够帮你解决项目心得(代码篇)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复