美文网首页.NETC#dotNET
第 2 章 C#语言基础应用

第 2 章 C#语言基础应用

作者: 张中华 | 来源:发表于2018-08-27 00:17 被阅读27次

    实例1:判断年份是否是闰年

    年份如果能被400整除就为闰年,或者指定年份可以整除4但不能整除100也为闰年。
    实现过程:

    判断方法:
     public class Methods
        {
            // if year can be divided by 400 
            // or can be divided by 4 and not by 100,
            // the year is leap year.
            public static bool IsLeapYear(string year)
            {
                int iYear;
                if (!int.TryParse(year, out iYear))
                {
                    return false;
                }
                return (iYear % 400 == 0 || (iYear % 4 == 0 && iYear % 100 != 0)) ? true : false;
            }
        }
    
    调用方法:
    static void Main(string[] args)
            {
                string year = "2008";
                string yearTwo = "2009";
                Console.WriteLine("{0} is leap year: {1}", year, Methods.IsLeapYear(year));
                Console.WriteLine("{0} is leap year: {1}", yearTwo, Methods.IsLeapYear(yearTwo));
    
                Console.ReadLine();
            }
    
    测试结果:

    实例2 使用checked关键字处理“溢出”错误

    默认,unchecked.
    使用checked关键字可能对程序的性能会有一点点影响,可以在代码的关键位置合理地使用checked关键字检查溢出,使用一点点的性能换来更加健康的程序,这样还是很好的。
    如果不使用checked关键字,数值出现溢出时将不会出现任何异常信息,这时将会出现一件可怕的事情,程序中的数据已经不准确了,但是我们却没发现。
    使用:

    // how to use checked
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                byte num = 0;
                for (int i = 0; i < 500; i++)
                {
                    num++;
                }
                stopWatch.Stop();
                TimeSpan ts = stopWatch.Elapsed;
                Console.WriteLine("Not use checked, num: {0}, time: {1}", num, ts);
    
                Stopwatch stopWatchTwo = new Stopwatch();
                stopWatchTwo.Start();
                byte numTwo = 0;
                try
                {
                    for (int i = 0; i < 500; i++)
                    {
                        checked { num++; }
                    }
                }
                catch { num = 0; }
                stopWatchTwo.Stop();
                TimeSpan tsTwo = stopWatchTwo.Elapsed;
                Console.WriteLine("Use checked, num: {0}, time: {1}", numTwo, tsTwo);
    

    测试结果:


    从测试结果来看的话,在没使用checked时,num做了500次加法,而由于溢出,狠明显,num由于类型的限制,它的值并没有一直往上加,而是停止在了244,用时也是非常小的。
    当使用了checked,并没有做到500次的相加,然而时间却是万倍,可能是数据量较小的缘故,使用时间都不是很长,以至于差别较大。但是使用checked造成时间上的性能损失还是比较明显的。

    实例3 使用is关键字检查对象是否与给定类型兼容,使用as关键字将对象转换为指定类型

    as关键字与is关键字一样都不会抛出异常,使用as关键字对对象进行类型转换,如果转换成功将会返回转换后的对象,如果转换不成功则不会返回异常而是返回NULL。

    实例3 递归算法

    数列:1,1,2,3,5,8,13,21,34,55……
    求第n位数的值。
    这里新建一个winform project,输入位数,计算出该位数数值:



    实现代码:

     private void button1_Click(object sender, EventArgs e)
            {
                int iNm;
                if (int.TryParse(this.textBox1.Text, out iNm))
                {
                    this.textBox2.Text = Calculate(iNm).ToString();
                }
                else
                {
                    MessageBox.Show("请检查文本输入格式", "提示");
                }
            }
    
            private int Calculate(int number)
            {
                if (number <= 0)
                {
                    return 0;
                }
                else if (number > 0 && number <= 2)
                {
                    return 1;
                }
                else
                {
                    return Calculate(number - 1) + Calculate(number - 2);
                }
            }
    

    相关文章

      网友评论

        本文标题:第 2 章 C#语言基础应用

        本文链接:https://www.haomeiwen.com/subject/iipaiftx.html