zoukankan      html  css  js  c++  java
  • ASP.NET动态网站制作(20)-- C#(3)

    前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解。

    内容

      1.StringBuilder类:由于string类一旦创建,则不能更改。如果做字符串拼凑的话,将会非常耗费空间,如:

    1 string str = "aaa";
    2 str += "bbb";

        如果执行上面的操作,则str首先在堆里开辟一个空间来存放"aaa",然后执行第二句语句的时候则再另外开辟一个空间来存放"aaabbb"。这样将非常耗费空间资源。所以在这类型的应用中不适用string,而使用StringBuilder。StringBulider在System.Text这一命名空间下。

    1 StringBuilder sb = new StringBuilder();
    2 sb.Append("aaa");
    3 sb.Append("bbb");

    这种形式的字符串拼凑则不会再另外开辟空间,直接在字符串后面添加。

      2. 控制语句:

        (1)if()...; if()...else()...;if()...else if()...else()...

        (2)switch()...case...

        (3)while()...

        (4)do...while()

        (5)for(;;)

        (6)foreach():对一个集合或者数组进行遍历。

        (7)break,continue,return

        (8)应用:求随机数的和及平均值:

    class Program
        {
            static void Main(string[] args)
            {
                int sum = 0;
                float average = 0;
                Random rand = new Random();
                ArrayList arrayList = new ArrayList();
                Console.WriteLine("你想求几个数的和及它们的平均值:");
                int iMax = int.Parse(Console.ReadLine());
                for (int i = 0; i < iMax; i++)
                {
                    arrayList.Add(rand.Next(1, 100));
                }
                Console.WriteLine("这{0}个数是:",iMax);
                foreach (var nums in arrayList)
                {
                    Console.WriteLine(nums);
                }
                for (int i = 0; i < iMax; i++)
                {
                    sum += (int) arrayList[i];
                }
                Console.WriteLine("这{0}个数的和是:{1}",iMax,sum);
                average = (float) sum/iMax;
                Console.WriteLine("这{0}个数的平均值是:{1}", iMax, average);
                Console.ReadKey();
            }
        }

      3.异常:在程序运行过程中产生使程序终止正常运行的事件,如数组越界。错误是语法上有问题,编译通不过,而异常是可以编译通过的。

    try{
        int[] array = {1,2,3,4};
        Console.WriteLine(array[4]);     //要发生异常的代码
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);    //处理代码
        //Console.WriteLine("网站正在维护中...");
    }
    Console.ReadKey();
    finaly
    {
        Console.WritelLine("正常");    //无论异常是否发生,都会执行的代码
    }

        抛出异常:

    class Program
        {
            static void A(string str)
            {
                if (str==null)
                {
                    throw new ArgumentException();
                }
            }
            static void Main(string[] args)
            {
                Console.WriteLine("输出结果为:");
                try
                {
                    string str = null;
                    A(str);
                }
                catch (ArgumentException e)
                {
                    Console.WriteLine(e.Message); 
                }
            }
        }

      4.数组、集合:

        (1)一维数组声明:int[] a = {1,2,3};或者int[] a = new int[3];或者int[] a = new int[]{1,2,3};可以用foreach语句来循环遍历输出数组元素。

        (2)二维数组声明:int[,] a = {{1,2},{2,3},{3,4}};int[,] a = new int[3,2];int[,] a = new int[,]{{1,2},{2,3},{3,4}}。

        (3)Console.ReadLine()是读取控制台输入的字符串

        (4)ArrayList是一个集合,其大小可以按照需求动态增加和减少。

    static void Main(string[] args)
            {
                int[] i = new int[] { 1, 2, 3, 4 };
                ArrayList list = new ArrayList();
                foreach (var a in i)
                {
                    list.Add(a);//将a添加到List中
                }
                list.RemoveAt(0);//删除第一个元素
                list.Add(0);//在List的末尾添加0
                list.Insert(1, 5);//在索引值为1处插入5
                list.Clear();//清除现有所有元素
                foreach (var b in list)
                {
                    Console.Write(b);
                }
            }

    但是ArrayList也存在一个问题,ArrayList操作的对象是Object类型,Object类型是任何数据类型的一个父类,是一个引用类型,一般操作的是值类型的数据,所以需要进行值类型转引用类型的装箱操作,程序的效率将下降。解决装箱拆箱问题使用泛型,如:List<int> list = new List<int>{};。

        (5)如果频繁地对数组进行增加、插入或者删除的话,很难定位到具体想要的数据,这种情况下就应该使用Hashtable。

    Hashtable ht = new Hashtable();
    ht.Add("key1","aaa");
    ht.Add("key2","bbb");
    foreach (var key in ht.Keys)
    {
          Console.WriteLine(ht[key]);
    }

    哈希表的泛型:

    Dictionary<string,string> dic = new Dictionary<string,string>();
    dic.Add("key1","aaa");
    dic.Add("key2","bbb");
    foreach(var key in dic.Keys)
    {
        Console.WriteLine(dic[key]);
    }

      5.封装、继承、多态:面向对象的三大特征。

        (1)封装:把类的内部隐藏起来,以防止外部世界看见一个面向对象的概念。

        访问修饰符:public(访问不受限制);protected(访问仅限于本类或者其子类--可以跨程序集);private(访问仅限于本类);internal(访问仅限于当前程序集);protected internal(访问本类或者同一个程序集或者子类--可以跨程序集)。对于字段和方法,默认的访问权限是private,对于类而言,默认的访问权限是internal。

        新建一个类库文件:新建项目->类库->生成->dll文件。

    后记:复习,练习,课外学习。

  • 相关阅读:
    (转发)storm 入门原理介绍
    shell :将标准输出及标准错误输出写到指定文件
    shell循环(两个日期比较,改变某个特定日期来改变当前比较值)
    MongoDB基本操作
    (转)cenntos 安装mongodb
    通过spark sql 将 hdfs上文件导入到mongodb
    股票实战--线性回归
    Python PIL 的image类和numpy array之间的互换
    根据关键点的脸型的计算
    用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard
  • 原文地址:https://www.cnblogs.com/zoe-yan/p/4914730.html
Copyright © 2011-2022 走看看