6月29日课堂笔记

值类型和引用类型的区别

   引用类型分配在堆里

   值类型分配在栈里

1,将一个值类型变量赋给另一个值类型的变量时,将赋值包含的值。引用类型变量的赋值只是赋值对对象的引用,而不是赋值对象的本身

2,值类型不可能派生出新的类型,所有的值类型均隐式派生自system.valuetype.但与引用类型相同的是,结构也可以实现接口。引用类型派生自object类

3,值类型不可能包含null,然而可控类型功能允许将null赋给值类型

4,每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值

============================

装箱和拆箱是什么

  装箱:从值类型接口转换到引用类型

  拆箱:从引用类型转换到值类型

        object obj=null;引用类型

        obj=1; 把值类型转换成引用类型,装箱

        int i1=(int)obj;拆箱

===============

什么是异常

   异常是指:程序运行时所遇到的自身逻辑错误或外部错误(如
所访问的数据库没启动,硬件损坏等)所引起的程序非正常运行。
所以异常的跑出是有条件的。如数组越界了才会抛出OutOfRangeException异常。

 包含系统定义的异常和自定义的异常

==============

多态的实现有哪几种方式

   父类实现  抽象类  接口

============

GC

   .net应用程序作为一个托管的运行机制。CLR里面有一个极其重要的部分就是垃圾回收

    刚刚生成的对象都是0代

   回收一次,那些没有被回收的对象叫编程1代  

   当有不需要的对象和代满了才开始进行回收

   每一代都有一个内存大小,内存的大小根据对象的大小决定

   0代,1代,2代   超出2代就异常

===========================

如何抛出异常   异常是个类,对象

    throw new Exeption("异常信息");

 异常抛出到了哪里

   异常抛给调用他的方法

  如果该方法没有处理异常,就再往上抛

  finally  处理释放资源

====================================

string

   字符串的定义方法以及数组使用

   string str="我是一个字符串";

   char[] chars={'1','2','3'};

两个构造函数

   string str1=new string(chars);

   string str2=new string('c',3);

 

字符串有个很特殊的使用方式,当做数组进行遍历

  for(int i=0;i<str,Length;i++)

{

   Console>WriteLine(str[i]);

}

此时不能改变数组里的值,需要转换成char数组才能转换,字符串的不变性

char[] chs=str.ToCharArray();

 

=============

常见的字符串属性与方法(参考msdn和老师发的文档)

比较

    string str1="C#";

    string str2="c#";

将字符串统一再比较。。。由于不可变性,是重新生成一个字符串,要有变量接受

   string s1=str1.ToUpper();//大写方法//小写方法ToLower

   string s2=str2.ToUpper();

-----------------------------------

   int res=string.Compare(str1,str2);

   str1>str2    1
   str1=str2    0
   str1<str2    -1
  
    string.Compare(str1,str2,true);
 true表示不区分大小写
 -------------------------

   bool isRirht=str1.Equals(str2,StringComparison,OrdinalIgnoreCase);     不区分大小写的比较

   bool isRirht=str1.Equals(str2);

-------------------

 字符串修整

    去掉两端的空格

     string str="    123    " ;

     string str1=str.Trim();

   去掉字符

     string stemp="{1223}";

     string temp=stemp.Trim('{','}');

扩展的方法    TrimEnd    TrimStart

--------------------------

合并与分割

   合并

   string[] strs={"密西",“卡卡”,“拉拉”};

   string str=string.Join("|",strs);

  分割

   string path=@"C:\Windows\system32\1.dll";

   string[] paths=path.Split('\\');

   str.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);

-------------------------------

 字符串的查找

   string str=@"D:\Music\孙燕姿_专辑\孙燕姿_天黑黑.mp3“;

  bool isRirht=str.Contains("孙燕姿");

查找的字符串在哪里

  int index=str.IndexOf("孙燕姿");

  int index=str.IndexOf("孙燕姿",10);
  默认情况下从字符串开始进行查找,找到第一个结束,返回位置
  可以使用第二个参数,表示从字符串的第几个字符开始查找
  如果没有找到返回-1;
 
  str.IndexOfAny(char[] anyOf,startIndexof);
  示例
     string str="1mm2mn3nd45ff6";
     char[] nums={'1','2','3','4','5','6'}
      int index=str.IndexOfAny(nums,0);
 
  示例LastIndexOf
         string path =@"D:\Music\孙燕姿_专辑\孙燕姿_天黑黑.mp3";
          int index=path.LastIndexOf("孙燕姿");

-----------------

求子字符串

//Substring()
//1,string str.Substring(index)
//从index开始到结束的所有部分
  int index=str.LastIndexOf('\\');
  string temp=path.Substring(index+1);
//2,string str.Substring(index,Length)
   string data="2012年6月29日" ;
   int index=data.IndexOf('月');
   string temp=data.Substring(index+1,2);

----------------------------

字符串的插入  移除和挑换
  //Insert  插入
  string="012345";
  str=str.Insert(3,"我");
  //Remove(index,length)  移除  Remove(index)默认移除index后的所有字符
  str=str.Remove(3,1);
  //替换  Replace("原字符串","新字符串")
  string temp=data.Replace("年","-").("月","-").Replace("日","-");

----------------------

判断开始与结尾
  string path=@"D:\123\344\54\22.Mp3";
  bool b=path.EndsWith(.Mp3); 
  bool b=path.StartsWith(string str);

-------------------

格式化字符串  string.Format();
string str=string.Format("{0}+{1}",1,2);

================

StringBuilder  动态字符串,可变的。字符串拼接
   //Append        (追加)
   //ToString()
   // AppendLine    (换行)
   //AppendFormat  (格式化)
   StringBuilder sb=new StringBuilder();

=============================

string temp = string.Empty;//表示空字符串,只读

========================

Equals  是可以重写的    

class MyClass   

  {     

        public int num;

        public override bool Equals(object obj)     

    {           

            MyClass m = obj as MyClass;      

             if (m == null)         

          {                

               return false;          

          }           

         return this.num == m.num;     

    }

        public static bool Equals(MyClass m1, MyClass m2)   

      {          

          return m1.num == m2.num;     

      }    

}  

Main函数        

           string str = "123";       

           string str2 = "123";             // 字符串拘留池(驻留池)

   

            //int i = 0;      

            //MyClass m1 = new MyClass();

            // bool isRight = str.Equals(str2);

            //MyClass m1 = new MyClass();          

          //m1.num = 10;           

           //MyClass m2 = new MyClass();         

           //m2.num = 10;

            // bool isRight = m1.Equals(m2);      

             // bool isRight = MyClass.Equals(m1, m2);

            // ==           

            char[] chs = { '1', '2', '3'  }

            str = new string(chs);         

          // str2 = new string(chs);

            bool isRight = str == str2;

             

      }   


 

 

 

 

 

 

 

posted @ 2012-06-29 23:39  我的名字很长很长  阅读(166)  评论(0编辑  收藏  举报