只想知道 发表于 2015-1-16 22:37:50

ASP.NET网页编程之利用C# 2.0泛型完成单例形式重用

如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。  先容

  良多有着分歧开辟背景得人城市对照熟习单例形式。他们会发明每次他们要创立一个分歧的单例类的时分,都不能不写一样得代码。利用新的C#2.0的泛型,能够完成只写一次一样得代码。

  利用C#2.0泛型来完成单例形式的重用

  利用C#2.0的泛型,使得完成我所说的"单例供应者"成为大概。这是一个可用来创立单例类实例确不必要为每一个特定的类重写单例形式代码的可重用的类。如许分别出单例布局的代码,将有益于坚持按单例形式利用类或不按单例形式利用类的天真性。

publicsealedclassSingleton
{
 Singleton()
 {}

 publicstaticSingletonInstance
 {
  get
  {
   returnSingletonCreator.instance;
  }
 }

 classSingletonCreator
 {
  //ExplicitstaticconstructortotellC#compiler
  //nottomarktypeasbeforefieldinit
  staticNested()
  {}

  internalstaticreadonlySingletoninstance=newSingleton();
 }
}
  基于对泛型的懂得,你能够发明没有来由不在这段代码里交换范例参数为泛型里典范的T。假如如许做,这段代码就酿成上面如许。

publicclassSingletonProvider<T>whereT:new()
{
 SingletonProvider(){}

 publicstaticTInstance
 {
  get{returnSingletonCreator.instance;}
 }

 classSingletonCreator
 {
  staticSingletonCreator(){}
  internalstaticreadonlyTinstance=newT();
 }
}
  注重在这里利用了泛型的束缚。这个束缚强迫任何范例T都必需具有没有参数的大众机关函数。这里同意singletonCreator类来实例化范例T。

  那末,要怎样来利用单例供应者呢?为了弄扫除怎样利用它,我们必要写一个测试类。这个测试类有两个部分。第一部分是一个默许的机关函数,用来设置timestamp变量的值。第二部分是一个大众函数,用来完成用"Debug.WriteLine"来输入timestamp的值。这个测试类的意义就是不管谁人线程在任什么时候候,在单例下挪用这个类大众办法,都将前往不异的值。

publicclassTestClass
{
 privatestring_createdTimestamp;

 publicTestClass()
 {
  _createdTimestamp=DateTime.Now.ToString();
 }

 publicvoidWrite()
 {
  Debug.WriteLine(_createdTimestamp);
 }
}
  这个类就像上面如许利用单例供应者:

SingletonProvider<TestClass>.Instance.Write();
  存眷点

  我已在一个超线程的双处置器上利用100个线程在单态形式下举行了测试。一切线程都前往不异的值,这申明这是一个线程平安的利用泛型来完成的单态形式。我信任这已充实申明了泛型怎样匡助你简化代码。C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。

若天明 发表于 2015-1-18 15:51:59

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

飘飘悠悠 发表于 2015-1-22 08:31:37

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

灵魂腐蚀 发表于 2015-1-30 23:59:07

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

深爱那片海 发表于 2015-2-6 17:24:08

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

若相依 发表于 2015-2-17 16:12:21

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

只想知道 发表于 2015-3-5 20:40:09

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

透明 发表于 2015-3-12 14:54:10

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

变相怪杰 发表于 2015-3-19 23:09:43

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
页: [1]
查看完整版本: ASP.NET网页编程之利用C# 2.0泛型完成单例形式重用