8.7.6 Operators

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

An operator is a member that defines the meaning of an expression operator

that can be applied to instances

of the class. There are three kinds of operators that can be defined: unary

operators, binary operators, and

conversion operators.

The following example defines a Digit type that represents decimal

digits.integral values between 0

and 9.

using System;

public struct Digit

{

byte value;

public Digit(byte value) {

if (value < 0 || value > 9) throw new ArgumentException();

this.value = value;

}

public Digit(int value): this((byte) value) {}

public static implicit operator byte(Digit d) {

return d.value;

}

public static explicit operator Digit(byte b) {

return new Digit(b);

}

public static Digit operator+(Digit a, Digit b) {

return new Digit(a.value + b.value);

}

public static Digit operator-(Digit a, Digit b) {

return new Digit(a.value - b.value);

}

public static bool operator==(Digit a, Digit b) {

return a.value == b.value;

}

public static bool operator!=(Digit a, Digit b) {

return a.value != b.value;

}

public override bool Equals(object value) {

if (value == null) return false;

if (GetType() == value.GetType()) return this == (Digit)value;

return false; }

public override int GetHashCode() {

return value.GetHashCode();

}

public override string ToString() {

return value.ToString();

}

}

C# LANGUAGE SPECIFICATION

38

class Test

{

static void Main() {

Digit a = (Digit) 5;

Digit b = (Digit) 3;

Digit plus = a + b;

Digit minus = a - b;

bool equals = (a == b);

Console.WriteLine("{0} + {1} = {2}", a, b, plus);

Console.WriteLine("{0} - {1} = {2}", a, b, minus);

Console.WriteLine("{0} == {1} = {2}", a, b, equals);

}

}

The Digit type defines the following operators:

. An implicit conversion operator from Digit to byte.

. An explicit conversion operator from byte to Digit.

. An addition operator that adds two Digit values and returns a Digit value.

. A subtraction operator that subtracts one Digit value from another, and

returns a Digit value.

. The equality (==) and inequality (!=) operators, which compare two Digit

values.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航