C#学习笔记(3)

DELEGATES控制台程序实例:
有什么方法不用goto回到if循环开头?书上说goto降低了代码的可读性,但是不可避免啊……再说这段程序也不长。以后有更好的方法再说吧。
该实例还用了控制台程序的获取按键方法,并判断按键字符。

<br />
    class Program<br />
    {<br />
        delegate string TestDele(params string[] userInput);</p>
<p>        static string Oper1(string[] userInput)<br />
        {<br />
            string total="";<br />
            for (int i=0;i&lt;userInput.Length;i++)<br />
                total+="“" + userInput[i] +"” ";<br />
            return "每个单词加上双引号为:n" + total; </p>
<p>        }</p>
<p>        static string Oper2(string[] userInput)<br />
        {<br />
            string total="";<br />
            for (int i = userInput.Length; i &gt; 0; i--)<br />
                total +=userInput[i-1] + " ";<br />
            return "单词逆序输出为:n" + total;</p>
<p>         }</p>
<p>        static string Oper3(string[] userInput)<br />
        {</p>
<p>            string total="", total2="";<br />
            for (int i = 0; i &lt; userInput.Length; i++)<br />
                total += userInput[i] + " ";<br />
            char[] charArray = total.ToCharArray();</p>
<p>            for (int i=charArray.Length;i&gt;0;i--)<br />
                total2+=charArray [i-1];<br />
            total2=total2.Trim() ;<br />
            return "字符逆序输出为:n" + total2;</p>
<p>        }</p>
<p>        static void Main(string[] args)<br />
        {<br />
            ConsoleKeyInfo cki;<br />
            TestDele process;<br />
            string input="";<br />
            StartLoop:<br />
            do<br />
            {<br />
                Console.WriteLine("请输入一些字符(单词用空格隔开):");<br />
                input = Console.ReadLine();<br />
            }<br />
            while(input=="");</p>
<p>            string[] strArray=input.Split(' ');            </p>
<p>            StartSelect:<br />
            Console.WriteLine("请选择字符处理方式:n输入1为单词加双引号n输入2为单词逆序输出n输入3为字符串逆序输出");<br />
            cki = Console.ReadKey();</p>
<p>            if (cki.KeyChar == '1')<br />
                process = Oper1;<br />
            else if (cki.KeyChar == '2')<br />
                process = Oper2;<br />
            else if (cki.KeyChar == '3')<br />
                process = Oper3;<br />
            else<br />
            {<br />
                Console.WriteLine("n**********无效输入,请重新选择**********");<br />
                goto StartSelect;<br />
            }</p>
<p>            Console.WriteLine(process(strArray ));</p>
<p>            Console.WriteLine ("按1从头开始,按任意键退出程序");</p>
<p>            //获取用户输入字符,决定是否重新开始程序<br />
            cki = Console.ReadKey();<br />
            if (cki.KeyChar == '1')<br />
            {<br />
                Console.Clear();<br />
                goto StartLoop;<br />
            }<br />
            else<br />
                return;</p>
<p>        }<br />
    }<br />

《C#学习笔记(3)》有一个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.