这是我的C#代码,它生成两个Circle类型的实例(c1,c2).
using System;
namespace ClassCircle
{
class Circle
{
float radius;
public Circle(float n)
{
Console.WriteLine("a circle of radius {0} has been created",n);
radius = n;
}
public double getArea()
{
double area = Math.PI * radius * radius;
return area;
}
public double getPerimeter()
{
double peri = 2 * Math.PI * radius;
return peri;
}
public void printInfo()
{
Console.WriteLine("Perimeter = {0}", getPerimeter());
Console.WriteLine("Area = {0}", getArea());
}
static void Main(string[] args)
{
Console.WriteLine("{0}", Math.PI.GetType());
Circle c1 = new Circle(9);
Circle c2 = new Circle(32.32);
Console.WriteLine("data of c1");
c1.printInfo();
Console.WriteLine("data of c2");
c2.printInfo();
//Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误是 
这是创建第二个实例c2的地方.
描述说' 不能从double转换为float '.我无法理解,我的参数是32.32,我相信它是一个浮点数.
当您编写十进制文字(例如32.32)时,编译器会自动将其视为double.
你需要明确地说它是一个浮点数,如下所示:
32.32f
Run Code Online (Sandbox Code Playgroud)
要么
(float)32.32
Run Code Online (Sandbox Code Playgroud)
请注意,您的其他线路通过字面整数9这是隐式强制转换为一个float(double不隐含转换成任何东西,看MSDN),所以它编译.