自己在开发中的总结
2010-07-26 19:40 音乐让我说 阅读(437) 评论(0) 编辑 收藏 举报- 测试某台机器上是否安装了 .NET Framework 的小程序 - 汽车租赁
- .NET 各个版本的版本号和发布日期:
- 在一个View 中尽量少用 Html.Action 和 Html.RenderAction ,因为每当一个 Html.Action(或:Html.RenderAction 都用重新New一个对应的Controller)。比如在 Home 的 Index 视图中,使用 “Html.RenderAction("Index","User")”,那么会 New 一个 UserController ,如果 New 很多性能会有影响。
- 显示指定枚举变量的值,新增的值放后面就可以了,不要加到开始或中间,枚举最好都显示指定了值。const (常量)也会出现这样的问题,如果类库B引用类库A,有一天类库A代码修改了,建议重新生成A和B,否则枚举和常量有时候会出现问题。所以尽量使用readonly 而不是 const,除非你保证永远不变,比如圆周率之类的。readonly 的好处就是它是运行时常量,修改它时,不必重新编译目标程序。比如:定义一个const的int值, 然后编译, 用dll方式引用。由于编译到dll中的时候, 编译器会优化代码, 不会保存常量名, 而是直接保存值。因此, 下一个人用的时候, 永远是那个值, 即使这面已经改过值了。例如:我写了一个FrameWork, 定义一个常量:public const int MaxValue = 100;然后编译成dll了。 然后你在写程序的时候, 使用了我的framework。并且引用了MaxValue这个值。有一天我发现, 其实我支持的最大值是1000。于是我升级了framework, 变成了:public const int MaxValue = 1000;然后framework发过去。由于程序集版本不升级, 你替换后直接使用了。那么, 你程序中使用MaxValue的地方, 就依然保持100, 而不是1000.
- 下面的一段代码编译时,将报警告:为形参"pageIndex"指定的默认值将不起作用,因为应用该值的成员所在的上下文不允许使用可选参数
// 下面的一段代码编译时,将报警告:为形参"pageIndex"指定的默认值将不起作用,因为应用该值的成员所在的上下文不允许使用可选参数
IList<CategoryPartial> IDALPager<CategoryPartial, SearchCategory>.GetEntitiesByPager(
int pageIndex = 1,
int pageSize = 1,
SearchCategory searchType = null,
IEnumerable<string> orders = null)
{
throw new NotImplementedException();
} - 在 ASP.NET 中,web.config 文件中有很多配置节点都有一个 configSource 的属性,利用它来指定 该节点下的元素,比如 appSettings,这样就可以把 appSettings 单独放到某一个 .config 文件中。好处:便于管理。缺点:修改后,不会像修改 web.config 文件后那样立即生效,需要在 IIS 中重启应用网站。比如:
<appSettings configSource="App_Configs\AppSettings.config"> </appSettings>
AppSettings.config:
<?xml version="1.0"?> <appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
- 如果相应使用轻量级泛型集合,可以考虑使用 System.Collections.ObjectModel.Collection<T>
- 关于 System.Linq.IGrouping<out TKey, out TElement> 、System.Linq.ILookup<TKey, TElement> 的解析如下:
IGrouping<out TKey, out TElement>:表示 一个 Key 对应 一个或多个 Value。用 JSON 来演示: { key: 1, value: [ 'a','b','c','d' ] } ILookup<TKey, TElement>: 一个 或多个 IGrouping<out TKey, out TElement>。用 JSON 来演示: [ { key: 1, value: [ 'a','b','c','d' ] }, { key: 2, value: [ 'a','f','k','m' ] },{ key: 3, value: [ 'p','q','w','t' ] } ]
// 摘要: // 表示具有公共键的对象的集合。 // // 类型参数: // TKey: // System.Linq.IGrouping<TKey,TElement> 的键的类型。 // // TElement: // System.Linq.IGrouping<TKey,TElement> 的值的类型。 public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable { // 摘要: // 获取 System.Linq.IGrouping<TKey,TElement> 的键。 // // 返回结果: // System.Linq.IGrouping<TKey,TElement> 的键。 TKey Key { get; } }
// 摘要: // 定义索引器、大小属性以及将键映射到 System.Collections.Generic.IEnumerable<T> 值序列的数据结构的布尔搜索方法。 // // 类型参数: // TKey: // System.Linq.ILookup<TKey,TElement> 中的键的类型。 // // TElement: // 组成 System.Linq.ILookup<TKey,TElement> 中的值的 System.Collections.Generic.IEnumerable<T> // 序列中的元素的类型。 public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable { // 摘要: // Gets the number of key/value collection pairs in the System.Linq.ILookup<TKey,TElement>. // // 返回结果: // The number of key/value collection pairs in the System.Linq.ILookup<TKey,TElement>. int Count { get; } // 摘要: // 获取按指定键进行索引的值的 System.Collections.Generic.IEnumerable<T> 序列。 // // 参数: // key: // 所需值序列的键。 // // 返回结果: // 按指定键进行索引的值的 System.Collections.Generic.IEnumerable<T> 序列。 IEnumerable<TElement> this[TKey key] { get; } // 摘要: // 确定指定的键是否位于 System.Linq.ILookup<TKey,TElement> 中。 // // 参数: // key: // 要在 System.Linq.ILookup<TKey,TElement> 中搜索的键。 // // 返回结果: // 如果 key 在 System.Linq.ILookup<TKey,TElement> 中,则为 true;否则为 false。 bool Contains(TKey key); }
- 检查当前运行环境是否是 Mono 环境下:
private static readonly bool isRunningOnMono = Type.GetType("Mono.Runtime") != null
- .NET Reflector 下载:点击这里
- .NET 下 Web 环境下使用多线程,包括 .NET 4.0 的 Task 时,极其不稳定,很可能某个任务没有执行或者回调函数没有执行,切记在 Web 环境下不要使用!
- 谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。