| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1643 人关注过本帖
标题:请教operator ++的用法!
只看楼主 加入收藏
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
 问题点数:0 回复次数:3 
请教operator ++的用法!
public static operator ++ Player(Player p)
这个语句有什么错误啊,operator该如何使用?
搜索更多相关主题的帖子: operator 用法 
2007-04-28 09:14
vfoxer
Rank: 2
等 级:论坛游民
威 望:1
帖 子:136
专家分:21
注 册:2006-9-12
收藏
得分:0 

msdn上有教程。

C# 程序员参考
运算符(C# 参考)

operator 关键字用于在类或结构声明中声明运算符。运算符声明可以采用下列四种形式之一:


public static result-type operator unary-operator ( op-type operand )
public static result-type operator binary-operator (
op-type operand,
op-type2 operand2
)
public static implicit operator conv-type-out ( conv-type-in operand )
public static explicit operator conv-type-out ( conv-type-in operand )

参数
result-type
运算符的结果类型。

unary-operator
下列运算符之一:+ - ! ~ ++ — true false

op-type
第一个(或唯一一个)参数的类型。

operand
第一个(或唯一一个)参数的名称。

binary-operator
其中一个:+ - * / % & | ^ << >> == != > < >= <=

op-type2
第二个参数的类型。

operand2
第二个参数的名称。

conv-type-out
类型转换运算符的目标类型。

conv-type-in
类型转换运算符的输入类型。

备注

前两种形式声明了用户定义的重载内置运算符的运算符。注意,并非所有内置运算符都可以被重载(请参见可重载的运算符)。op-type 和 op-type2 中至少有一个必须是封闭类型(即运算符所属的类型)。例如,这将防止重定义整数加法运算符。

后两种形式声明了转换运算符。conv-type-in 和 conv-type-out 中正好有一个必须是封闭类型(即,转换运算符只能从它的封闭类型转换为其他某个类型,或从其他某个类型转换为它的封闭类型)。

运算符只能采用值参数,不能采用 ref 或 out 参数。

任何运算符声明的前面都可以有一个可选的属性(C# 编程指南)列表。

示例

以下是一个有理数的极其简化的类。该类重载 + 和 * 运算符以执行小数加法和乘法,同时提供将小数转换为双精度的运算符。


// cs_keyword_operator.cs
using System;
class Fraction
{
int num, den;
public Fraction(int num, int den)
{
this.num = num;
this.den = den;
}

// overload operator +
public static Fraction operator +(Fraction a, Fraction b)
{
return new Fraction(a.num * b.den + b.num * a.den,
a.den * b.den);
}

// overload operator *
public static Fraction operator *(Fraction a, Fraction b)
{
return new Fraction(a.num * b.num, a.den * b.den);
}

// define operator double
public static implicit operator double(Fraction f)
{
return (double)f.num / f.den;
}
}

class Test
{
static void Main()
{
Fraction a = new Fraction(1, 2);
Fraction b = new Fraction(3, 7);
Fraction c = new Fraction(2, 3);
Console.WriteLine((double)(a * b + c));
}
}
输出
0.880952380952381


狐狸天堂:http://www.
我的百度空间:http://hi.baidu.com/vfoxer
2007-04-28 09:21
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 
还有些是只有一个+,像operator +,搞不懂!

IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-04-28 09:31
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
重载了以后就当普通运算符来使用呗,使用形式也可以像函数(方法)调用那样,++本来是自增1,重载可以自增2、3......C++里的<<、>>本来是左、右移位符,重载后什么是做什么工作大家应该都很清楚了,
还有楼主,是用“++”不是用那个关键字啊

[此贴子已经被作者于2007-4-28 19:34:54编辑过]


Viva,espana!
2007-04-28 19:32
快速回复:请教operator ++的用法!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015523 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved