如何将方法调用到同一个类的构造函数中并将用户输入传递给它?

时间:2015-08-27 14:11:21

标签: c#

我发现这里的帖子与我的问题很相似。但这没有帮助。我想计算一个圆的面积。我不想自己传递值,而是想获取用户输入,因此我创建了一个名为myValue()的方法。现在我想将该方法或int _radius变量调用到构造函数中。我是C#的新手,喜欢你的建议:

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;
            using System.Threading.Tasks;

            namespace PracticeFor70_483Exam.Venkat
            {
                class Circle
                {
                    private readonly int Radius;

                    public static int MyValue()
                    {
                        Console.WriteLine("Please enter radius value: ");
                        return Convert.ToInt32(Console.ReadLine());
                    }

                    float _PI = 3.141F;
                    public Circle()
                    {
                        Radius = myValue();
                        //this._radius = Radius; 
                    }
                    public float CalculateArea()
                    {
                        return this._PI * this.Radius * this.Radius;
                    }
                }
                class StaticAndInstanceClass
                {
                    public static void Main()
                    {
                        Circle c1 = new Circle(2);
                        float Area = c1.CalculateArea();
                        Console.WriteLine("The area is: {0}", Area);
                        Console.ReadLine();
                    }
                }
            }

2 个答案:

答案 0 :(得分:2)

将radius设为Circle类的实例字段并修改MyValue方法。

public class Circle
{
    private readonly int Radius;

    public static int MyValue()
    {
        Console.WriteLine("Please enter radius value: ");
        return Convert.ToInt32(Console.ReadLine());
    }

    public Circle()
    {
        Radius = MyValue();
    }

...

}

请注意,这是一个非常糟糕的主意"但是,你的圆圈类应该代表一个圆圈而不是其他东西。提供有关控制台的信息至少可以说是奇怪的。它违反了Single Responsibility Principle等。

答案 1 :(得分:0)

给定代码中有两个问题:
1. myValue()代替MyValue()。因为,它区分大小写 2. Circle(2)而不是Circle()。因为,它没有带参数的构造函数。