C#的构造函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:59:01
namespace ConsoleApplication9
{
class Program
{
public int r;
public double area()
{
return Math.PI * r * r;
}
public Program(int a)
{
r = a;
}
static void Main(string[] args)
{
Program p1 = new Program();
p1.r = 2;
Program p2 = new Program(4);
Console.WriteLine("{0}",p1.area());
Console.WriteLine("{0}",p2.area());
Console.Read();
}
}
}
p1对象没有传参数 然后就报错 说我没有采用参数重载
请问各位 构造函数必须传参数吗? 怎么改这个程序啊

namespace ConsoleApplication9
{
class Program
{
public int r;
public double area()
{
return Math.PI * r * r;
}
public Program(int a)
{
r = a;
}
public Program()
{

}
static void Main(string[] args)
{
Program p1 = new Program();
p1.r = 2;
Program p2 = new Program(4);
Console.WriteLine("{0}",p1.area());
Console.WriteLine("{0}",p2.area());
Console.Read();
}
}
}

因为你自己手写了一个有参数构造函数,所以该类就不会自动生成无参构造函数了,你要想用无参构造函数就要手写。

是这样的:
在你没有指定构造函数的时候,C#会为你构造一个默认的无参构造函数;
在你指定了任何构造函数之后,C#就不再会为你构造任何构造函数了;

而你代码中你用了有参数的构造函数,C#就不再会为你构造任何构造函数;new Program(),调用的是无参的构造函数,而这个函数又不存在,当然就出错了
解决方法就是加一段<