2015-10-27 C# 第三次课

1、StringBuilder使用方法

  string s=null;和string s="";区别:

  1、string s=null; 不在内存中开辟空间

  2、string s="";在内存中开辟空间,但空间中没有值(""也是一个字符串)

   方法一:结果与方法二相同,但这种方法很耗系统资源,建议不要使用.

string s1 = "aaa";

           s1 += "bbb";

           s1 += "cccc";

           s1 += "dddd";

           Console.WriteLine(s1);

   方法二:结果与方法一相同,这种方法最优化,建议使用.   

string s1 = "aaaa";

            StringBuilder sb = new StringBuilder();

            sb.Append(s1);

            sb.Append("vvvvvv");

            sb.Append("dddddd");

            //Console.WriteLine(sb.ToString());

另外字符常用方法:

字符串变量传值:

    string s1 = "a";

    string s2 = "b";

    string s = string.Format("大家好,小明今年{0}岁,小王今年{1}岁", s1, s2);

将S1的值传递给{0},S2的值传递给{1},整合成一个新的字符串赋值给S 

2、format方法:(foreach方法就是对一个集合或者数组进行遍历)

Foreach遍历数组的方法:

  class Program
 {
  static void Main(string[] args)
  {
    string[]aString={"aaa","ccc","ddd","eeee"};;
    foreach(var c in aString) //遍历
     {
     Console.WriteLing(c);
    }
     Conesole.ReadKey();
  }
 } }

结果:

 3、错误和异常:

    3.1、错误就是语法有问题,不能够编译通过的。

  class Program
 { 
   static void Main(string[] args)
   {
        stringg a="dsadfa";
        Console.ReadKey();
   }
 } }

    3.2、异常是可以编译通过,但是不能够正常的运行  

      class Program
  { 
       static void Main(string[] args)
     {
        string[] aString={"aaa","ccc","ddd","eeee"};
        Console.WriteLine(aString[4]);
         Console.ReadKey();
      }
  } }

  3.3异常处理:(把可能发生异常的地方,放在try”里面  当发生异常的时候通过“catch(Exception ex)”来捕获它)

    class Program
  { 
   static void Main(string[] args) { try { string[] aString={"aaa","ccc","ddd","eeee"};    Console.WriteLine(aString[4]); } catch(Exception ex) { //Console.WriteLine(ex.Message); //表示把异常信息打印出来
Console.WriteLine(网站正在维修中...); //不想让客户看见异常原因是什么,可以通过这来写,这样会比较好
}

  
 finally //不管是否发生异常,这里面都会执行
 
  {
     Console.WriteLine;

   }
     Console.ReadKey();
      }
  } }

 4、数组和集合

    class Program
  {
    static void Main(string[] args)
  {
    char[] a = new char[] { 'a', 's', 'f', 'e', 'r', 't', 'y' };
    Console.WriteLine("请输入你要读取的第几个元素值:");
  int i = Convert.ToInt32(Console.ReadLine());  //Console.ReadLine(): 表示在控制台里面获取到输入的内容.
  if (i <= a.Length)
  {
  Console.WriteLine("指定位置的元素值为:"+a[i - 1]);
  }
  else
  {
  Console.WriteLine("您输入的数字超出了数组的长度");
  }
  Console.ReadKey();
  }
 } }

5、添加和删除数组元素(ArryList)

  System.Collections命名空间

  ArryList使用的大小可以按照需求动态增加

   class Program
  {
   static void Main(string[] args)
  {
   char[]aChar=new char[] { 'a', 's', 'f', 'e', 'r', 't', 'y' };
    
   ArrayList alist =new ArrayList();
   foreach(var a in aChar)
   {
    alist.Add(a);  // Add里面是输入object数据类型
   }
   foreach(var al in alist)
     {  
      Console.WriteLine(al);
    }
    Console.ReadKey();
  }
 }
}

注:Add里面也可以写删除、添加、插入、清除这些元素:   

  //List.RemoveAt(0);//删除第一个元素

 //List.Add(0);//在List的末尾添加0

  //List.Insert(1, 5);//在索引值为1处插入5

 //List.Clear();//清除现有所有元素

6、object类型是任何数据类型的父类

注:object是属于引用类型

   class Program
  {
   static void Main(string[] args)
  {
   int[]aNumber={2,23,234,234};
    
   ArrayList alist=new ArrayList();
   foreach(var a in aNumber)
   {
    alist.Add(a);  // Add里面输入的是object数据类型,要将值类型转为引用类型叫装箱  装箱拆箱有利于损耗性能
   }
   foreach(var al in alist)
     {  
      Console.WriteLine(al);
    }
    Console.ReadKey();
  }
 }
}

注:使用”ArrayList“在数据操作过程中,容易导致装箱拆箱会影响到性能问题,这样我们就可以用泛型类型来解决装箱拆箱问题。

7、泛型(list<T>)

   class Program
  {
   static void Main(string[] args)
  {
   int[]aNumber={2,23,234,234};
   
List<int>list=new List<int>(); // list<T>表示泛型
foreach(var a in aNumber)    {     list.Add(a);    } Console.ReadKey();   }  } }

注:list<T>里面也可以写删除、添加、插入、清除这些元素:   

  //List.RemoveAt(0);//删除第一个元素

 //List.Add(0);//在List的末尾添加0

  //List.Insert(1, 5);//在索引值为1处插入5

 //List.Clear();//清除现有所有元素

 

8、Hashtable的用法  

摘要:当对一个数组进行删除、清除、插入的话,这个时候顺序就打乱了,要是想精确定位某一个具体的值就要用“Hashtable”方法

    1.1(Hashtable存储方式就是key value)

例子:

   class Program
  {
   static void Main(string[] args)
  {
    Hashtable ht=new Hashtable();  //Hashtable用法
     ht.Add("key1","aaa");
    ht.Add("key2","ccc");
    foreach(var key in Keys)
    {
     Console.WriteLine(ht[key]);
    }
      Console.ReadKey();
  }
 }
}

显示的结果:

  1.2 Hashtable的泛型形式Dictionary

  class Program
  {
   static void Main(string[] args)
  {
    Dictionary<string,string>dt =new Dictionary<string,string>();
     dt.Add("key1","daaa");
    dt.Add("key2","ddddd");
    foreach(var key in Keys)
    {
     Console.WriteLine(ht[key]);
    }
      Console.ReadKey();
  }
 }
}

显示的结果:

9、面向对象的语言三大特点:封装、继承、多态

  1、封装

    1.1 public(访问不受限制) 可以在当前命名空间的所有文件+外部的类库文件调用。 
    1.2 protected(访问仅限于本类或者其子类,可以跨程序集) 可以在本类或者其子类调用(跨程序集的子类也可以)
      1.3 private(访问仅限于本类) 只能够在本类里面调用
      1.4 internal(访问仅限于当前程序集) 只能在当前的命名空间里面调用。
      1.5 protected internal 在当前命名空间下的所有文件,以及跨程序集的子类里面可以用。

原文地址:https://www.cnblogs.com/admi88/p/4915976.html