当前位置:首页 > 网络编程 > 软件语言 > .NET > 整理一下运算符资料

整理一下运算符资料

点击次数:19 次 发布日期:2008-11-06 08:08:26 作者:源代码网
源代码网推荐
广告载入中
☆C#的运算符定义只有四种形式:---------------------------------------
①public static 返回类型 operator ?(单形参)
②public static 返回类型 operator ?(双形参)
③public static implicit operator 隐转目标类型(单源类型形参)
④public static explicit operator 显转目标类型(单源类型形参)
△全部都是传值,故不可用ref和out参数
△全部都是static
△比较运算符的重载必须贯彻成对一起定义的原则来实现C#的一站式编码
△true()和false()也是运算符,分别表示 非(假/空)吗 和 非(真/空)吗

☆可重载的运算符以及解决方法可行性表(摘自vs.n中文正式版帮助):--------------------------------
运算符 可重载性
, -, !, ~, , --, true(), false() 可以重载这些一元运算符。
, -, *, /, %, &, | , ^, <<, >> 可以重载这些二进制运算符。
==, !=, <, >, <=, >= 可以重载这些比较运算符(但必须成对重载)。
&&, || 不能重载条件逻辑运算符,但可使用 & 和 | 对其进行计算,可以重载 & 和 |;请参阅 7.11.2 用户定义的条件逻辑运算符。
[] 不能重载数组索引运算符,但可定义索引器。


() 不能重载转换运算符,但可定义新的转换运算符(请参阅 explicit 和 implicit)。
=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
不能重载赋值运算符,但例外的是可使用 (该运算符可被重载)计算 =。
=, ., ?:, ->, New, is, sizeof(), TypeOf()
不能重载这些运算符。




☆一些散题:-------------------------------------
①传递对象引用是传值的一种,不属于传址.因为对象的值只是实体的地址,如果传对象变量的地址才算是传址
②readonly比const宽松,因为也可以在构造器中赋值,此外【static readonly】<=>【const】
③using简化书写的其中一个功能就是创建〖姓或类型〗的别名,可减少修改
④using(IDispose化的对象〖,....〗){ }语句可以确保句尾调用对象.Dispose()
⑤代码和注释是最好的心得!



☆以下是C#运算符重载以及其他技巧的简单例子(摘自vs.n中文正式版帮助)--------------------------------
//版权所有 (C) 2000 Microsoft Corporation。保留所有权利。

// dbbool.cs
using System;

public struct DBBool
{
// 3 个可能的 DBBool 值:
public static readonly DBBool dbNull = new DBBool(0);
public static readonly DBBool dbFalse = new DBBool(-1);
public static readonly DBBool dbTrue = new DBBool(1);
// 为 dbFalse、dbNull、dbTrue 存储 -1、0、1 的私有字段:
int value;

// 私有构造函数。值参数必须为 -1、0 或 1:
DBBool(int value)
{
this.value = value;
}

// 从 bool 到 DBBool 的隐式转换。将 true 映射为
// DBBool.dbTrue,并将 false 映射为 DBBool.dbFalse:
public static implicit operator DBBool(bool x)
{
return x? dbTrue: dbFalse;
}

// 从 DBBool 到 bool 的显式转换。如果
// 给定的 DBBool 为 dbNull,则引发异常,否则返回

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华