练习

(1)下面两个函数都存在错误,请指出这些错误。

        static bool Write()
        {
            Console.WriteLine("Text output from function.");
        }

        static void MyFunction(string label, params int[] args, bool showLabel)
        {
            if (showLabel)
                Console.WriteLine(label);
            foreach (int i in args)
                Console.WriteLine("{0}", i);
        }

答案: 第一个函数的返回类型是bool,但不返回一个bool值。 第二个函数有一个params实参,但这个实参不在实参列表的末尾处。

(2)编写一个应用程序,该程序使用两个命令行参数,分别把值放在一个字符串和一个整型变量中,然后显示这些值。

答案:

    static void Main(string[] args)
    {
        if(args.Length != 2)
        {
            Console.WriteLine("Two arguments required.");
            return;
        }
        string param1 = args[0];
        int param2 = Convert.ToInt32(args[1]);
        Console.WriteLine("String parameter: {0}", param1);
        Console.WriteLine("Integer parameter: {0}", param2);
    }
    注意这个答案包含的代码检查是否提供两个实参,本题没有这个要求,但在本题中进行检查是很合理的。

(3)创建一个委托,在请求用户输入时,使用它模拟 Console.ReadLine() 函数。

答案:

    class Program
    {
        delegate string ReadLineDelegate();
        static void Main(string[] args)
        {
            ReadLineDelegate readLine = new ReadLineDelegate(Console.ReadLine());
            Console.WriteLine("Type a string:");
            string userInput = readLine();
            Console.WriteLine("You typed: {0}", userInput);
        }
    }

(4)修改下面的结构,使其包含一个返回订单总价格的函数。

        struct order
        {
            public string itemName;
            public int unitCount;
            public double unitCost;
        }

答案:

    struct order
    {
        public string itemName;
        public int unitCount;
        public double unitCost;

        public double TotalCost()
        {
            return unitCount * unitCost;
        }
    }

(5)在 order 结构中添加另一个函数,使其返回如下所示的一个格式化的字符串(一行文本,以合适的值替换用尖括号括起来的斜体条目)。

        Order Information: <unit count> <item name> items at $<unit cost> each, 
        total cost $<total cost>

答案:

    struct order
    {
        public string itemName;
        public int unitCount;
        public double unitCost;

       public double TotalCost()
        {
            return unitCount * unitCost;
        }

       public string Info()
        {
            return "Order information: " + unitCount.ToString() + " " + itemName + 
            " items at $" + unitCost.ToString() + " each, total cost $" +
            TotalCost().ToString();
        }
    }

🔚