技巧C#
1. 在CallBack之后保持滚动条的位置:
在Asp.Net1.1中,CallBack之后保持滚动条的位置是一件非常痛苦的事情,特别是页中有一个Grid并且想要编辑特定的行。为了不停留在想要得行,页面会重新加载并且必须在顶部向下滚动。在ASP2.0中,只需要简单的在页面的属性中加入MaintainScrollPostionOnPostBack属性即可
<%@ Page Language="C#"
MaintainScrollPositionOnPostback="true" AutoEventWireup="true"
CodeFile="" Inherits=""%>
2. 匿名委托实现自定义排序
public void SortByCommentCount(List<Article>
articleList, bool ascending)
{
articleList.Sort(delegate(Article
a, Article b)
{
return
(a.CommentCount - b.CommentCount) * (ascending ? 1 : -1);
});
}
3. Readonly是运行时常量,Const是编译时常量;前者灵活,后者高效;前者可以用于任何类型,后者只能用于数字和字符串
4. 获得客户端计算机名称
System.Net.Dns.GetHostEntry(Request.UserHostName).HostName;
5. 常用集合:
CollectionsUtil 创建忽略字符串大小写的集合。
HybridDictionary 在集合较小时,使用 ListDictionary 来实现 IDictionary,然后当集合变大时,切换到 Hashtable。
ListDictionary 使用单链接列表实现 IDictionary。建议用于通常包含 10 个或 10 个以下项的集合。
NameObjectCollectionBase 为关联的 String 键和 Object 值的集合(可通过键或索引来访问它)提供 abstract 基类。
NameObjectCollectionBase.KeysCollection 表示集合的 String 键的集合。
NameValueCollection 表示可通过键或索引访问的关联 String 键和 String 值的集合。
OrderedDictionary 表示根据键/索引排序的键/值对的集合。
StringCollection 表示字符串集合。
StringDictionary 将键和值强类型化为字符串而不是对象来实现哈希表。
6. ListDictionary、Hashtable、HybridDictionary
小数据量: ListDictionary优于Hashtable,10个或10个以下
大数据量: Hashtable优于ListDictionary,10个以上为大
不确定数据量:HybridDictionary,能化的决定你的数据该用ListDictionary存储还是Hashtable存储
以上三个,都属hashtable,那Dictionary与他们有什么不同呢?
Dictionary<>:单线程程序中推荐使用,有泛型优势, 且读取速度较快, 容量利用更充分,有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便
Hashtable:默认的 Hashtable 允许单线程写入,
多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减
7. volatile 修饰符通常用于由多个线程访问而不使用 lock 语句
8. implicit 关键字用于声明隐式的用户定义类型转换运算符,如A+B
9. as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回
null 而不是引发异常。注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来执行。
10. 控件之间传值Item只是HttpContext的一个属性。 HttpContext.Item
也就是说这个属性是针对一次请求而言的,每个用户每次发出的请求都会建立一个HttpContext的实例,所以不存在什么用户共享的问题。
一般,Item只是用于控件开发的时候存储一些共有的值,在下一次请求到来的时候item中的值又会重新建立的.
11. 以下对象是按引用传递:
Hashtable[包括从session里面取出来之后不用再塞回去]
SqlDataReader
StringBuilder
Dictionary<T, T>
12. NameValueCollection用法
NameValueCollection myCol = new NameValueCollection();
myCol.Add( "red", "rojo" );
myCol.Add( "green", "verde"
);
myCol.Add( "blue", "azul" );
myCol.Add( "red", "rouge" );
myCol.Add( "red", "bbb");
print: red rojo,rouge,bbb
green verde
blue azul
13. HttpCookie注意事项
cookie.Values.Add 如果key存在,则在该key之上累加
如Add前是010,如果继续对该键值Add 则变成010,010
cookie.Values[key] 该key不存在也可以添加,推荐
14. File.Exists(fileName); 文件是否存在
Directory.Exists(folderName); 目录(文件夹)是否存在
15. 绑定DropDownList绑定之后设置默认值
ddlBranch.Items.FindByText("总公司").Selected =
true;
16. 绑定到简单属性:<%#UserName%>
绑定到集合:<asp:ListBox id="ListBox1"
datasource='<%# myArray%>' runat="server">
绑定到表达式:<%#(class1.property1.ToString() +
"," + class1.property2.ToString())%>
绑定到方法返回值:<%# GetSafestring(str) %>
绑定到Hashtable:<%#
((DictionaryEntry)Container.DataItem).Key%>
绑定到ArrayList:<%#Container.DataItem %>
17. ASP.NET服务器控件
Name用this.UniqueID.ToString()获得
ID用this.ClientID.ToString()获得
18. ASP.NET 执行父控件的方法
Page p = this.Parent.Page;
Type pageType = p.GetType();
MethodInfo mi = pageType.GetMethod("Loading");
string sqlwhere = GetWhere(hsr);
mi.Invoke(p, new object[] { sqlwhere });
19. 服务器端FileUpload上传控件如何禁止手动输入
<asp:FileUpload ID="FileUpload1" runat="server"
Height="22px" Width="412px"
onkeydown="event.returnValue=false;" onpaste="return false"
/>
20. 数据连接关闭问题
1.DataReader的关闭:if not
dr.isclosed then dr.closed() ,如果不关闭dr,直接关闭cn,那么dr自动关闭.
2.DataSet不存在关闭与否的问题
3.DataTable存在关闭与否的问题,而.net缺省设为,当使用dt.fill(ds)时,它自动打开,填充完后自动关闭
21. 巧妙截取日期dateString.Split(' ')[0]
22. 不要用 + 来连接两个 路径字符串
用Path.Combine( "字符串1
", "字符串2 ")
比如
Path.Combine(@ "C:\AAA\BBB ", "CCC
") //
C:\AAA\BBB\CCC --自动补上一个斜杠
Path.Combine(@ "C:\AAA\BBB\ ",@ "\CCC ") //相同结果,自动去掉一个斜杆
Path.Combine(@ "C:\AAA\BBB ",@ "..\CCC ")
//C:\AAA\CCC
- Access数据库中多参数
string sql = "update tb_type
set typename=@typename,describe2=@describe2
where id=@id";
OleDbParameter[]
parameters = {
new OleDbParameter("@typename", OleDbType.VarChar,50),
new OleDbParameter("@describe2", OleDbType.VarChar,50),
new OleDbParameter("@id", OleDbType.Integer,4)};
parameters[0].Value = model.typename;
parameters[1].Value = model.describe2;
parameters[2].Value = model.id;
在access中居然要求顺序依次对应。
-----------------------------------------
技巧C#的更多相关文章
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...
- 15个关于Chrome的开发必备小技巧[译]
谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- 【工具使用】mac电脑使用技巧
本文地址 分享提纲: 1. mac命令行和finder的交互 2. 一些mac的插件 3. 一些开发的配置 1.mac命令行和findder交互 1)命令行中打开当前文件夹: o ...
- Function.prototype.toString 的使用技巧
Function.prototype.toString这个原型方法可以帮助你获得函数的源代码, 比如: function hello ( msg ){ console.log("hello& ...
- SAP CRM 性能小技巧
导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...
- 分享两个BPM配置小技巧
1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...
随机推荐
- 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
转载:http://blog.csdn.net/wanghuiqi2008/article/details/50724676 一.开发环境: 操作系统:ubuntu 14.04 IDE:Eclipse ...
- 安装Tomcat指定JDK ——转
转自:http://www.cnblogs.com/lioillioil/archive/2011/10/08/2202169.html 一.应用实例 一般情况下一台服务器只跑一个业务,那么就直接配置 ...
- MPEG2 PS和TS流格式
http://blog.csdn.net/alangdangjia/article/details/9495193 应该说真正了解TS,还是看了朋友推荐的<数字电视业务信息及其编码>一书之 ...
- IBM-ETP 实训项目前一天
明天就要开始项目了,实训项目,虽然之前做了几个项目,但是明天就要被一个有着8年项目经验的大牛带着做这个项目了.心中还是不免有点兴奋的.希望能学到更多的东西,来充实自己. 自己也搭建了一个小的demo ...
- webDriver API——第15部分Expected conditions Support
class selenium.webdriver.support.expected_conditions.alert_is_present Bases: object Expect an alert ...
- mui ajax方法
mui ajax方法详解: mui提供了mui.ajax,在此基础上有分装出mui.get()/mui.getJSON()/mui.post()三个方法. mui.ajax( url [,settin ...
- Swift的String与OC的NSString的区别
Swift的String类型是值类型.如果你创建了一个新的字符串值,那么当其进行常量.变量赋值操作或在函数/方法中传递时,会进行值拷贝. 在不同的情况下,都会对已有字符串值创建新的副本,并对该新副本进 ...
- Aptana插件在eclipse中安装
- 解决gremlin-dirver访问tinkerpop服务器提示序列化错误
解决gremlin-dirver访问tinkerpop服务器提示序列化错误 问题描述 程序集成了gremlin-driver,访问远程tinkerpop服务器,在执行创建节点操作时,返回如下错误栈: ...
- 点滴积累【C#】---操作文件
操作文件 写入文件效果: 写入文件代码: private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { try { File ...