实例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); } }
作者:张中华
链接:https://www.jianshu.com/p/744ccaf050b1
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦