.NET相关

                      类型、结构、功能
       as操作符试图强制转换一个对象为指定的类型。但与通常的强制转换不一样,如果对象的类型强制转换不成功,结果会是null,as操作符决不会掷出异常。当引用有毛病的强制类型转换发生时,将产生NullReferenceException异常。下列代码示范了这种情况。
                 System.Object o = new System.Object(); //创建一个新的Object 对象 
                 Jeff j = o as Jeff; //强制转换 o 为一个Jeff对象 
                 // 上面的强制转换失败:不会有异常掷出,而j会被置为null 
                 j.ToString(); // 访问j时产生一个NullReferenceException 异常
除了as操作符以外,C#还提供一个is操作符。它检查是否一个对象实例与给定的类型兼容并判断结果是True或是False。Is操作符不会产生异常。
       允许你为单独类型创建别名,如果你只使用名字空间中的几种类型并且不想用所有的名字空间类型污染整个名字空间的话      1.1  引用类型和数数值类型
        当从受管堆(managed heap)中分配对象时,new操作符返回对象的内存地址。通常将这个地址存储在一个变量当中。这种方式就是引用类型的变量,因为变量不包含实际对象的位,而是引用对象的位。
                 System.Int32 a = new System.Int32(5);
编译这个语句时,编译器发觉System.Int32是数值类型并优化产生的中间语言(IL)代码,以便使这个“对象”不从堆中分配;而将这个对象放到线程堆栈的局部变量a中。
           

      using RichterFooBar = Richter.FooBar;
                 class MyApp

                       { 
                       method void Hi()

                                 { 
                                        RichterFooBar f = new RichterFooBar(); // 不会出错 
                                } 
                 } 

 

            UNBOX/BOX

          在很多种情况下,把数值类型当作引用类型来使用便于问题的处理。将一个数值类型装化为引用类型既是框入。 框出重新获得包含在对象中的数值类型(数据字段)的引用,其内部机制可描述为:
1、CLR(Common Language Runtime)首先保证引用类型变量不为空,并且它就是希望数值类型的框入值,如果这两个条件都不成立,则产生一个InvalidCastException异常。
2、如果类型确实匹配,则含在对象中的数值类型指针被返回,这个指针所指的数值类型不包含通常与真正的对象关联的开销:即虚表指针和同步块指针。
注意框入总是创建一个新对象并拷贝框出的的位到这个对象。而框出只是简单地返回一个框入对象的数据指针:不发生内存的拷贝。但是通常的情况是:代码会导致被框出的引用类型所指的数据被拷贝。
示范了框入和框出:: 
                 public static void Main() {
  
                         Int32 v = 5; // 创建一个框出的数值类型变量
                           Object o = v; // o 既是v的一个框入版本
                           v = 123; // 改变框出的值为123
                         Console.WriteLine(v + ", " + (Int32) o); // 显示 "123, 5"
                    }



索引属性 
      某些类型,如System.Collections.SortedList暴露逻辑元素列表。为了能轻松存取这种类型中的元素。
索引器必须至少带一个参数,参数个数可以是两个或更多。这些参数(以及返回类型)可以是任何类型。创建以String作为参数的索引器查找联合数组中的值是十分普通的事情。一种类型可以提供多个索引器,只要其原型不同。
      一个设计良好的索引器应该具备get和set两个存取方法。即便你能只实现get存取方法(对于只读语义)或者只实现set存取方法(对于只写语义),建议你的索引器实现两个存取器。理由很简单,索引的使用者不希望只有半个行为。例如,当编写下面两行代码时,使用者不想看到编译器出错: 
            String s = SomeObj[5]; // 如果有存取器,编译 OK 
            SomeObj[5] = s; //如果没有存取器,编译出错
索引器总是起类型实例的作用,并且不能被声明为静态。但它可以是公共的、私有的、保护的或内部的。
当你创建索引属性时,编译器实际上会发布专门的get_Item和/或set_Item存取器方法。大多数编译器都会理解这些专门的方法并且会允许开发人员利用专门的索引属性语法存取这些方法。但是,与CLS(公共语言系统)兼容的编译器不需要完全支持索引属性;只要编译器支持专用存取器调用即可。


1.3  .NET体系结构
.NET体系描述如下: 
        它是一组公共的服务,可以用于许多面向对象的语言。 这些服务以中间代码的形式运行。中间代码独立于底层体系。 服务在一个运行时环境(Common Language Runtime,CLR)下运行,由CLR管理资源并监视程序运行。
        .NET的主要目标是帮助开发者通过“Web服务”创建可从任何类型的设备访问的协同应用,例如访问设备可以是PC、PDA、移动电话等等。
.NET
                ● 多语言支持
                ● 应用的平台独立性
                ● 应用的可移植性
                ● 所有语言必须遵从一种公共的协议


1.4  .NET功能
        通过web 提供分布式计算: .NET 有几个令人激动的思想,它们是:Web 服务、SOAP/XML 和 CLR (Common Language Runtime:通用语言运行环境)。
        Web 服务:可以看作由 XML 通过 HTTP 协议来调度的远程过程调用 (RPC)。我看 .NET 基本上就是一个创建、分配、使用、支持 Web 服务,并为它提供开发环境的框架。Web 服务许诺:每个应用程序都能以一个 Internet 上的服务出现。Web 服务将成为一个关键技术,因为它是基于每天都使用的、并且是经过检验的机制。
SOAP/XML :实际上是 Web 服务的生命线,它使用通用语言 XML 和协议 SOAP 来描述数据的含义。分布式计算的世界里充满了大量的事务和消息,当我们为此使用 COM/DCOM、CORBA 和 EJB 时,今天的 Web 应用程序很大程度上是依靠手工技巧的,或者使用复杂的机制在不同的技术阵营之间进行通讯。
        CLR :是一个技术规范,无论程序使用什么语言编写,只要能编译成中间语言 (IL),就可以在它的支持下运行。


.NET 是什么?
        Microsoft.NET (从前叫做NGWS:Next Generation Windows Services) 是 Microsoft 从以客户机为中心的模式转移到以网络为中心的模式的战略保护伞。
        .NET 分成三个部分。一个在服务器端,就是像 Windows DataCenter 这样的操作系统,这里 Microsoft 处于主机市场竞争者的位置。在中间,是 XML,以及用来从数据库或数据表中提供信息,以使开发者能通过 XML 调用他们的简单对象访问协议 (SOAP)。在客户端,是支持 XML 语法分析、从而根据赋予它的标记来显示信息的操作系统。


Microsoft 为什么转移到以网络为中心的模式?
  以客户机为中心的桌面厂商为什么要转移到更多地以网络为中心的模式上来?按照 Steve Ballmer 的说法:这是用户所希望的!更进一步,这也是将来用户所希望的。在一个以服务器为中心的环境中分发应用程序减少了客户端的管理、简化了程序的更新和安装,并且会对移动计算环境提供更好的支持。对网络管理员来说,以客户机为中心的模型难于支持,而对家庭用户而言更是如此。要生存得更长久,以客户机为中心的计算将由基于服务器的模型进行补充。


开发者面临的.Net挑战
        电子商务的大潮已经袭来,这需要所有的软件都支持 Web。开发者们思考得更多的是如何把现有的应用程序放到 Web 上,如何为 Internet 开发出企业级的、高性能的以及可伸缩的应用程序。
        对基于 Web 的开发过程的充分理解是在 Internet 开发领域取得成功的关键。我们来看看一个基于 Web 的应用程序是如何区别于你现在所开发的应用程序的。
        在基于 Web 的开发模型中,应用程序是分布式的。这种结构有很多优点,包括伸缩性、性能、易于配置和扩展,但是它们的有效性要依赖于正确的实现。一个特殊的平台脱颖而出:Microsoft Windows DNA。Windows DNA 的结构涉及到一个 Web 服务器 (Internet Information Server) 和一个事务处理服务器 (Microsoft Transaction Server),以及其它几个产品和服务。这些服务器经常被单独地称为 IIS 和 MTS。
这些东西共同形成了位于 Microsoft Windows 顶部的一个软件平台层,它们开放地紧密集成起来,并提供丰富的应用程序服务。MTS 同 Microsoft Windows 2000 下的强大服务结合在一起,形成了现在大家所知道的 COM+,即:MTS + COM = COM+。 
        Windows DNA 结构使我们可以把精力集中在最需要的开发领域以满足业务需求,而不用对它的支撑层操心过多。Windows DNA 提供内部结构和服务方便地实现安全性、事务管理以及同已有系统的互操作性。采用 Windows DNA 结构意味着我们能够一步一步地开始使应用程序支持 Web,而不是从一无所有做起。通过支持最新的可扩展标记语言 XML 和简单对象访问协议 SOAP 技术,我们可以确信应用程序能够很好地工作于现在和未来。 
        使用 Windows DNA 结构,我们能够建立可伸缩、可扩展的电子商务解决方案。但电子商务应用程序将如何与其它电子商务程序通讯?这些应用程序究竟在哪里运行?面对这些挑战,Microsoft 亮出了它的最新一代操作平台:Microsoft .NET。
        .NET 铺设了用户和应用程序能从 Internet 的力量中获得益处的道路。在 .NET 里,用户获得数据的能力(无论这些数据在何处)以及不同的应用程序共享和交换数据的能力成为可能并且现实。这是借助 XML 和 SOAP(Simple Object Access Protocol) 实现的。这些技术可能会对全球电子商务市场中的应用程序的开发、配备和使用的方法产生革命性的推动。.NET 操作平台和开发工具套件以及服务器是按照实现这一前景,并方便基于 Web 的应用程序开发来设计的。
 

1.2  .NET中的特殊类型成员
类型构造器 

          你已经熟悉了什么是构造器,它负责对象实例状态的初始化。除了实例构造器以外,Microsoft(r).NET公共语言运行时(CLR)还支持类型构造器(也叫做静态构造器、类构造器或类型初始化)。类型构造器可被应用到接口,类和数值类型。它允许任何在类型中声明的成员被访问之前实现必要的初始化。类型构造器不需要参数并且总是返回void类型。类型构造器只访问类型的静态字段并且其通常的目的是初始化这些字段。在类型的任何实例被创建之前以及类型的任何静态字段或方法被引用之前,必须要保证已经运行了类型构造器。 许多语言(包括C#)在定义类型时都自动产生类型构造器。
C#中定义的类型: 
          class Atype { 
                    static int x = 5; 
          }
在建立这段代码中,编译器自动地为产生Atype类型构造器。这个构造器负责初始化静态字段x为值5。如果你使用ILDasm,很容易认出类型构造器方法,因为它们的名字都是.cctor(对于类构造器而言)。
在C#中,通过在类型中定义静态构造器方法,你可以自己实现类型构造器。关键字static的使用意味着这时类型构造器,而不是实例构造器。下面是一个非常简单的例子:
          class AType { 
            static int x; 
             static AType() { 
                        x = 10; 
                 
            }
注意类型构造器决不能试图创建自己的类型实例,而且构造器也不能引用类型的非静态成员。最后,如果你用C#编译器编译下列代码,它产生单独的类型构造器方法。这个构造器首先初始化x=5,然后,初始化x=10。换句话说,编译器产生的结果类型构造器首先包含静态字段的初始化代码,随后是类型构造器的代码。
属性(property)
      当你创建属性时,编译器实际上发出专门的get_ProName和/或set_ProName存取器方法(这里ProName是属性名)。大多数编译器会理解这些专用方法并允许开发人员存取这些有专门属性语法的方法。但是,遵守公共语言运行时规范的编译器不需要完全支持属性,只要支持专用存取方法调用即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值