方法重载和构造函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 09:34:57
using System;
using System.Collections.Generic;
using System.Text;

namespace Heavy_methodsII
{
class MyClass
{
//定义一个参数类型为int的方法
public void MyClass(int i)
{
Console.WriteLine("构造函数1启动");
}
//重载参数类型为out int的方法
public void MyClass(out int i)
{

Console.WriteLine("构造函数2启动");
}
//重载方法为参数类型为double的方法
public void MyClass(double i)
{
Console.WriteLine("构造函数3启动");
}
//重载参数类型为string的方法
public void MyClass(string str)
{
Console.WriteLine("构造函数4启动");
}
}
class Program
{
static void Main(string[] args)
{
int a = 17;
int b;

构造函数前面不能加修饰词,把所有构造函数前面的void去掉。另外,out参数需要在使用的时候赋值,请在使用out参数的函数里面为它赋值。

public MyClass(int i)
{
Console.WriteLine("构造函数1启动");
}
public MyClass(out int i)
{
i=2;
Console.WriteLine("构造函数2启动");
}
public MyClass(double i)
{
Console.WriteLine("构造函数3启动");
}
public MyClass(string str)
{
Console.WriteLine("构造函数4启动");
}
晕,把void去掉,谁教你的都,迷糊了.还有第2个记得给i值.

class MyClass
public void MyClass(int i)
这样的方法定义不应该存在。因为方法名称与类型名称相同。已经定义MyClass 为一个类型了,就不能再定义其为普通的成员方法了。如果想要定义为构造函数,则应该定义为:
public MyClass(int i)
没有返回值,也就是说构造函数是不需要也不能指定返回值的。
另外方法的重载可以在普通的方法也如此定义,但是对于构造函数,按上面的原理说明,都是不可以有返回值的。