技巧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.小技巧 有的同事入职后使 ...
随机推荐
- ElasticSearch位置搜索
ElasticSearch位置搜索 学习了:https://blog.csdn.net/bingduanlbd/article/details/52253542 学习了:https://blog.cs ...
- 如何使用angularjs实现文本框设置值
<!DOCTYPE html> <html ng-app="myApp"> <head> <title>angularjs-setV ...
- python 静态成员变量
python 静态成员变量 python 也可以定义静态成员变量,就是类的变量. 注意python的静态成员变量只能通过 类.变量名 的形式获取 class A: a1 = 0 def __init_ ...
- Ubuntu安装Mac皮肤
如果是ubuntu的PC版,在稳定性方面的要求不是非常高,而又想换换界面养养眼,像我一般只用我的Ubuntu12.04来写写代码,娱乐娱乐的,可以试试Ubuntu的Mac皮肤. 好了,废话不多说,上图 ...
- TP框架模板中默认值输出
TP框架模板中默认值输出 我们可以给变量输出提供默认值,例如: {$user.nickname|default="这家伙很懒,什么也没留下"} 对系统变量依然可以支持默认值输出,例 ...
- highcharts 坐标轴 数值 格式化
以Y轴为示例: yAxis: { min: 0, gridLineColor: '#ececee', gridLineWidth: 1, lineColor: '#ececee', lineWidth ...
- Errors occurred during the build
Errors occurred during the build.Errors running builder 'Integrated External Tool Builder' on projec ...
- Struts 第一个Hello页面
在工程目录的src下新建 struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...
- AL2018届校招笔试——自然语言处理
[单选40min+在线编程80min] 单选 1.以下进程的哪些行为不会导致操作系统向该进程发送一个信号?() A. 程序终止退出 B. 访问了一个非法的内存地址 C. 一个该程序正在监听的socke ...
- REMOTE HOST IDENTIFICATION HAS CHANGED问题的解决方式
好久没更新博客园. 这段没更新博客的时间内收获了很多,所以更新下博客来整理.记录这段时间内学到的内容. 最近腾讯云服务器欠费停机了,所以趁着缴费.趁着心血来潮就……重装了云系统.结果在进行远程ssh连 ...