使用C#中的类的第一步,使用方法内部变量到另一个方法

时间:2015-06-06 00:01:17

标签: c# class oop console-application

我一直在尝试使用类编写我的第一个程序,在Visual Studio中我是C#的新手,并且值得一提的是它已经有一段时间了(2年),因为我使用OOP Im寻找一种方法来启动和运行通过练习,它是一个简单的程序来计算一个poligon的面积,周长和体积。

我没有能够修改类的属性,即使我没有错误,并且我没有得到任何值到我的类属性,而且,我打算从类中拉出方法到我的主,和使用它们进行数学计算,使用

1.-如何将变量P保存到相同的类属性中,以便进一步用于另一种方法?

class Program
{
    static void Main(string[] args)
    {
        VolumenPrisma Herramienta = new VolumenPrisma();
        VolumenPrisma.Registro();
    }
}    

namespace Poligono
{
    public class VolumenPrisma
    {
        public static int Apotema, TamLado, NumLados, Altura, lado;

        public static double cPerimetro (int NumLados, int lado){
            double P;
            P=(NumLados*lado);
            return P;    
        }

        public static void Registro(){
            Console.WriteLine("Indique No. de lados: ");
            VolumenPrisma.NumLados = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Indique tamanio de lado: ");
            VolumenPrisma.lado = Int32.Parse(Console.ReadLine());    
            Console.WriteLine("----------------------------------------");
            Console.WriteLine("Perimetro = {0} ",VolumenPrisma.cPerimetro(NumLados,lado));
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您的方法比OOP(面向对象编程)更像是一种模块化解决方案。 面向对象意味着创建一个对象,一个给定类的实例来完成一些特定的任务:

VolumenPrisma herramienta = new VolumenPrisma();

现在,这个实例有责任执行这项工作:

herramienta.Registro();
var perimeter = herramienta.Perimetro();

因为Perimetro()方法会让您回到Registro()中读取的两个值的简单计算,所以将其设计为属性是完美的:

class Program
{
    static void Main(string[] args)
    {
        VolumenPrisma herramienta = new VolumenPrisma();
        herramienta.Registro();

    }
}    

namespace Poligono
{
    public class VolumenPrisma
    {
        private int numLados;
        private int lado;

        public double Perimetro
        {               
            get { return numLados * lado; }
        }

        public void Registro()
        {
            Console.WriteLine("Indique No. de lados: ");
            numLados = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Indique tamanio de lado: ");
            lado = Int32.Parse(Console.ReadLine());

            Console.WriteLine("----------------------------------------");

            Console.WriteLine("Perimetro = {0} ", Perimetro);
        }
    }
}

答案 1 :(得分:0)

只需将P声明为变量以及您保留的所有其他变量,而不是本地变量。

public static int Apotema, TamLado, NumLados, Altura, lado, P;

public static double cPerimetro (int NumLados, int lado){
    P=(NumLados*lado);
    return P;    
}

虽然如果你打算这样做,我建议使用比P更具描述性的变量名。

如果你只在课堂上使用P,你可以将其声明为私人:

public static int Apotema, TamLado, NumLados, Altura, lado;
private static int P;

public static double cPerimetro (int NumLados, int lado){
    P=(NumLados*lado);
    return P;    
}