如何在C#中使用构造函数调用方法?

时间:2013-07-21 04:37:16

标签: c#

以下是我从未能完成的课程作业。

我创建一个构造函数并尝试调用该方法。它永远不会奏效。我真的不知道我在这里做错了什么。我要求输入和readline,然后键入我的构造函数,但它不会调用。我怎么称呼这个?

public static int RomToNum(String rom)
{
    StringBuilder temp = new StringBuilder();
    int ret = 0;
    char[] letters = rom.ToArray();
    foreach (char item in letters)
    {
        if (item == 'M')
            ret += 1000;
        if (item == 'D')
            ret += 500;
        if (item == 'C')
            ret += 100;
        if (item == 'L')
            ret += 50;
        if (item == 'X')
            ret += 10;
    }

    for (int x = 0; x < letters.Length; x++)
    {
        if (letters[x] == 'I' && !letters.Contains('V'))
        {
            ret += 1;
        }
        else
        {
            if (letters[x] == 'I' && x != letters.Length-1)
            {
                ret += 4;
                break;
            }
            else if (letters[x] == 'I' && x == letters.Length-1)
            {
                ret += 6;
                break;
            }
        }
    }
    return ret;

}

2 个答案:

答案 0 :(得分:1)

因为你在另一个类中调用它

你使用

    CurrentClass.RomToNum("String Values");

你不需要为类创建一个对象来引用这个方法,因为它是一个静态方法

答案 1 :(得分:0)

老实说,我不知道为什么要用构造函数调用方法而不是Precious1tj发布的方法。但是如果你想使用构造函数来调用方法,你可以这样做:

class Program
    {
        static void Main(string[] args)
        {
            Class2 c2 = new Class2("X"); //outputs '10' once it's instantiated

            Console.ReadKey();
        }
    }

    class Class2
    {
        //overloaded ctor
        public Class2(string rom)
        {
            Console.WriteLine(RomToNum(rom));
        }
        public static int RomToNum(String rom)
        {
            StringBuilder temp = new StringBuilder();
            int ret = 0;
            char[] letters = rom.ToArray();
            foreach (char item in letters)
            {
                if (item == 'M')
                    ret += 1000;
                if (item == 'D')
                    ret += 500;
                if (item == 'C')
                    ret += 100;
                if (item == 'L')
                    ret += 50;
                if (item == 'X')
                    ret += 10;
            }

            for (int x = 0; x < letters.Length; x++)
            {
                if (letters[x] == 'I' && !letters.Contains('V'))
                {
                    ret += 1;
                }
                else
                {
                    if (letters[x] == 'I' && x != letters.Length - 1)
                    {
                        ret += 4;
                        break;
                    }
                    else if (letters[x] == 'I' && x == letters.Length - 1)
                    {
                        ret += 6;
                        break;
                    }
                }
            }
            return ret;

        }
    }

从构造函数调用方法的缺点是,只要您想要计算新的罗马数字,就必须创建类的新对象。