namespace ref1
{
class Program
{
static void Main(string[] args)
{
int a = 1;
int b = 2;
swap(ref a);
Console.WriteLine("{0}", a);
swap(ref a, ref b);
Console.WriteLine("{0} {1}", a, b);
Console.ReadKey();
} public static void swap(ref int x)
{
x += 10;
}
public static void swap(ref int a, ref int b)
{
int t;
t = a;
a = b;
b = t;
} public static int operator+(int a,int b)
{
return (a + 2 * b);
}
}
}
{
class Program
{
static void Main(string[] args)
{
int a = 1;
int b = 2;
swap(ref a);
Console.WriteLine("{0}", a);
swap(ref a, ref b);
Console.WriteLine("{0} {1}", a, b);
Console.ReadKey();
} public static void swap(ref int x)
{
x += 10;
}
public static void swap(ref int a, ref int b)
{
int t;
t = a;
a = b;
b = t;
} public static int operator+(int a,int b)
{
return (a + 2 * b);
}
}
}
解决方案 »
- 求替换关键字 (一行一个)如何写
- 请问Tag属性有什么用的啊?
- c#和C++取反操作结果不一致问题!!!求助!!!
- 求 winform 下用textbox实现类似百度搜索提示的代码
- 请教一个关于数据绑定的问题
- 【求教】怎样设置快捷键?
- 向EXCEL单元格插入图片的问题!!!!
- 关于多线程遇上random函数时随机数老重复的问题,请问如何使用 Random函数获得高精度随机数?
- 一个工程里要生成两个可执行文件(exe)
- c#里面如何使禁止Form的托拽?
- .Size.Height 与 .Height 两种属性的写法,区别是什么呢?为何要存在两种不同的表达方式呢
- 下面是一个类的测试程序,设计出能使用如下测试程序的类
public static int operator+(int a, int b)
{
return (a + 2 * b);
}C#只给类的编写者重载对应类型运算符的权利。尽管这样,我还是非常反对开发者使用重载运算符这个特性。
var b=new 谓语("编程");
var c=a+b;于是编译器就知道了c原来是一个句子。
表演班 team;
....
list.AddRange(team); //把team中的所有成员加入演员表可以参考:http://s.yanghao.org/program/viewdetail.php?i=32556
重载 == 还必须同时实现 GetHashCode()再比如 + 重载,则需要满足交换律、结合律,以及和零元运算的分配律(加法运算是么元运算)
还必须要考虑重载 ++ 运算,以及考虑二元、三元操作等等。所以事实上,没有特殊原因,不要轻易重载运算符,这方面学院的那套简直是胡搞。和C#2.0的很多新特性相反,我非常反对初学者去使用所谓的运算符重载。 重载运算符本身不复杂,但是需要考虑很多问题。为什么时间运算符系统本身没有重载,就说明这么做没有必要。很多学院派的人只看到了语法现象,没有看到重载本身的意义。