asp.net中操作符简单介绍

c#中操作符重载:

 代码如下 复制代码

class Test
{
public static Test operator + (Test arg1,Test arg2){...}
}

虽然CLR对操作符一无所知,但它却规范了编程语言应该怎样提供操作符重载,以使它们可以很容易地被不同的编程语言编写的代码所使用,每个编程语言自己决定是否支持操作符重载,以及如果提供,表达和使用它们的语法是怎样的,对于CLR来讲,操作符重载仅仅是一些方法而已。

当编辑如果代码时,编辑器会产生一个名为op_Addition的方法定义;该方法定义条目上有一个specialname标记,表示这是一个"特殊"的方法。当编辑器(包括C#编辑器)看到源代码中的+操作符时,它们会去看其中的操作数类型中有哪一个定义了参数类型和操作数类型兼容、名为op_Addition的specialname方法。如果存在这样的方法,编译器就会调用方法,如果不存在,则会出现编译错误。

操作符与语言互操作性:

操作符重载是一个很有用的工具,它能够通过简洁的语法来表达自己的思想。但不是很一种编程语言都支持操作符的重载,比如Visual Basic ,所以当Visual Basic开发人员在一相非基元类型(Visual Basic认为的)上应用+操作符时,编译器将产生一个错误,并停止运行。这样就产生了一个问题,一个使用不支持操作符重载语言的开发人员怎么去调用另一个支持操作符重载的语言定义类型呢?

以Visual Basic 与 C# 为例(Visual Basic 不支持操作符的重载,而c#支持):

1.在Visual Basic 里没有操作符的重载,但是提供了一个op_Addition(相当于+)方法;

首先建一个vb的类库并新建一个VbType的类,类的内容如下:

 代码如下 复制代码

Public Class VbType

    Public Shared Function op_Addition(ByVal a As VbType, ByVal b As VbType) As String
        Return "operator + "
    End Function

End Class

2.在 c#里对上面类型的实例进行+操作

 代码如下 复制代码

using System;

    class Program
    {
        static void Main(string[] args)
        {
            //这样操作是错误的
            //不能通过编译
            Console.WriteLine(vb+vb);

            //只能通过这样的方法来访问           
            Console.WriteLine(VbType.VbType.op_Addition(vb,vb));
        }
    }

之所以不能用+ 来操作两个实例的原因是:当c #编译器遇到+时,就会到元数据中去查找带有specialname的元数据标记的op_Addition方法,编译器才能确定这是一个操作符重载的方法,但是vb产生的op_Addition方法没有specialname标记,所以编译器会报错。

相反,如果是在c#中定义了一个+操作符的重载,在vb里面进行实例的+操作的话,也只能调用op_Addition方法

时间: 2024-09-20 12:34:37

asp.net中操作符简单介绍的相关文章

浅谈ASP.NET中最简单的自定义控件

这篇文章主要简单介绍了ASP.NET中最简单的自定义控件,以及核心代码示例,需要的朋友可以参考下 ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法. 假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理. UserControl.ascx.cs中的处理: 1. 定义public的事件委托

SQL Server LocalDB 在 ASP.NET中的应用介绍_实用技巧

我相信世界总是会向更好的方向发展,今年的维也纳新年音乐会没有往年的明星级指挥,但是它通过回归奥地利的本质,以更传统的聚合法则,让过往的艺术家们一代代创造的灿烂,在新的指挥手中,迸发出更深邃的音节.在此,也祝大家新年快乐.如同交响乐一样,构造软件系统不一定必须某个强大的明星驱动,我们站在历代ADO.NET的肩膀上,更好地回归到SQL Server的核心开发:SQL Server LocalDB 在 ASP.NET中的应用. 使用SQL Server LocalDB的优势: 快速部署完整的SQL S

ASP入门知识:简单介绍ASP的基础知识

ASP文件可包含文本.HTML标签和脚本.ASP文件中的脚本可在服务器上执行. 在学习之前,应具备的知识: 在继续学习之前,您需要对以下知识有基本的了解: HTML / XHTML 诸如JavaScript或者VBScript的脚本语言 如果希望学习上面的项目,请在我们的首页访问这些教程. ASP是什么? ASP指Active Server Pages(动态服务器页面) ASP是运行于ISS之中的程序 IIS指Internet Information Services(因特网信息服务) IIS是

AJAX在ASP.NET中的简单应用

介绍 本文介绍了使用AJAX和ASP.NET编写web应用程序的一个简单方法.同时,讨论了使用AJAX的好处和不足.为了举例说明,本文给出了相应的JavaScript代码和用C#.NET编写的ASP.NET代码. 为什么使用AJAX 也许大多数人已经知道AJAX的意思是异步JavaScript和XML(Asynchronous JavaScript and XML).据我所知,这项技术最初是由Microsoft在1999年提出来的,也就是我们所熟知的"使用远程调用(remote calls)的D

实例说明asp.net中的简单角色权限控制_实用技巧

角色表+用户表,其中Hope_T_User(用户)中的User_RoleId关联Hope_T_Role(角色)的Role_Id,表中字段均为简单常见英文,不作详解. 主要思路是使用公共类在其中根据角色得出其越权时的操作,然后后台所有需要验证权限的页面均继承此类,使用相应参数判断角色以做相应操作. 公共类:AdminPermission 复制代码 代码如下: /// <summary> /// AdminPermission角色权限验证类 /// </summary> public

浅谈ASP.NET中最简单的自定义控件_实用技巧

ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法.  假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理.         UserControl.ascx.cs中的处理:         1. 定义public的事件委托,如ClickEventHandler;         2.

python中异常简单介绍

 代码如下 复制代码 try:     print 1/0 except ZeroDivisionError, e:     print e except:     print "error or exception occurred." #integer division or modulo by zero 可以让try ... except 关联上一个else,当没有异常时则执行else. 我们可以定义自己的异常类,需要继承Error或Exception.  代码如下 复制代码 c

利用Timer在ASP.NET中实现计划任务的方法_实用技巧

.NET Framework中为我们提供了3种类型的Timer,分别是: Server Timer(System.Timers.Timer),Thread Timer(System.Threading.Timer )和Windows Timer(System.Windows.Forms.Timer). 其中Windows Timer和WinAPI中的Timer一样,是基于消息的,而且是单线程的.另外两个Timer则不同于Windows Timer,它们是基于ThreadPool的,这样最大的好处

简单介绍ASP中Cache技术的应用

cache ASP从发布至今已经7年了,使用ASP技术已经相当成熟,自从微软推出了ASP.NET之后就逐渐停止了对ASP版本的更新.但是由于有很多人仍然习惯使用ASP来开发网站,所以,再次我将以一个简单的例子来说明在ASP中如何使用Cache. 简单的说使用Cache基本原理是,把经常需要且获得代价昂贵的数据在内存中持续保存一定时间,以供这些数据可以被直接地全局地访问.例如,有一些数据需要从数据库多个表中查询获得,且几乎每个页面都要调用这些数据. 这种情况下的最佳实现就是将这部分数据Cache起