C#小技巧(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#开发代码的小技巧(一)
(2010-05-06 09:30:12)
分类:个人手记
标签:
it
1. 使用as,而非is
object o=GetFromCache("A_KEY");
EmployeeInfo employee=o as EmployeeInfo;
if(employee!=null){
//TODO: 代码
}
2. 使用DataReader读取数据
using(SqlDataReader reader = SqlHelper.ExecuteReader(cmd)) {
while(reader.read()) {
//TODO: 读取当前行的数据
}
}
3. 尽量使用强类型集合(包括泛型集合),而非DataTable
using(SqlDataReader reader = SqlHelper.ExecuteReader(cmd)) {
Ilist
while(reader.read()) {
list.add(new EmployeeInfo(
reader.getInt32(0)
//其它字段
));
}
}
4. 使用StringBuilder操作频繁变动的字符串,但以下情况例外
代码一:string s = "str1" + "str2" + "str3" + "str4"; //这段代码不需要使用StringBuilder,因为编译后的代码为string s = "str1str2str3str4";
代码二:String.Format("{0}{1}{2}{3}", str0, str1, str2, str3);
5.control扩展方法,按回车发送tab键
public static class ControlExtensions
{
public static void SendTabKey(this Control control, Keys key)
{
if(key==Keys.Enter)
SendKeys.Send("{TAB}");
}
}
6.遍歷control
private void PanelClear(Control c)
{
foreach (Control cc in c.Controls)
{
if (cc.GetType() != typeof(Panel))
{
PanelClear(cc);
}
else
{
((Panel)cc).Visible = false;
}
}
}
7.对所有类都重写ToString()方法,这样在调试,绑定中都非常有用。
8.使用Enum代替奇迹数
9.找出是否存在某个窗体FORM
for (int j = 0; j < Application.OpenForms.Count; j++)
{
if (Application.OpenForms[j].Name.Equals("FNO31000"))
{
fno3100 = true;
}
}
If (fno3100 = true)
FNO31000 fno = (FNO31000)Application.OpenForms["FNO31000"]
10.将datagridview的某个checkbox不显示
public void chang_COLOR(int i, string str)//將顯示為N者不顯示選取方塊
{
dataGridView1.Rows[i].Cells[str].ReadOnly = true;
DataGridViewCell cell = new DataGridViewTextBoxCell();
cell.Style.BackColor = Color.Wheat;
//cell.ReadOnly = true;
cell.Value = "N";
cell.Style.BackColor = Color.White;
dataGridView1.Rows[i].Cells[str] = cell;
dataGridView1.Rows[i].Cells[str].Style.ForeColor = Color.White;
dataGridView1.Rows[i].Cells[str].Style.SelectionBackColor = Color.White; dataGridView1.Rows[i].Cells[str].Style.SelectionForeColor = Color.White; }
11.打開某個路徑下的程序
Process p = new Process();
p.StartInfo.FileName = "cmd.exe"; //设定程序名
eShellExecute = false; //关?Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向标ã输¤J
p.StartInfo.RedirectStandardOutput = true; //重定向标ã输¥X
p.StartInfo.RedirectStandardError = true; //重定向错?输¥X
p.StartInfo.CreateNoWindow = true; //设置不显¥Ü窗口
p.StartInfo.WorkingDirectory = @"E:\";
p.Start(); //启?
p.StandardInput.WriteLine("新增文字文件.bat");
p.StandardInput.WriteLine("exit");
12.字符串留用技术
字符串留用技术用来处理大量的字符串,而这些字符串中又会有许多重复的字符,例如: "str1", "str2",... , "str100" 共10,000个这样的字符,毫无疑问,其实就99个字符
这种情况可以使用到字符串留用技术,会提到性能
13. 数组永远是0基的
14. 使用多线程或异步操作的时候使用线程池的QueueUserWorkItem()方法将需要执行的任务排队,而不是手动去Start一个线程
15.如果实现了IDisposable的对象在访问完成后要进行关闭,则在try{...}finally{...//关闭代码},或直接调用using(...){...}。
16.在写公共类库,使用catch时,最好不要catch(Exception e){throw e;}而使用catch{throw;},同时如果使用catch捕捉异常,最好使用catch(最具体的Exception e){...}catch(最具体的Exception e){...}...一直到所有确认的错误都能检查到;而不要使用catch(基类Exception e){...} 17.//尽量不用
string str="";
//而是
string str=string.Empty;