.NET学习之010203总结

来源:互联网 发布:手机兼职软件 编辑:程序博客网 时间:2024/06/05 07:52

1、可空类型( double? dNum=null;)

   ·可空类型可以强制转换为对应的基础类型,比如int?x=3;int y=(int)x;,但在转换之前一定要先测试是否不为空,如果为空的话就会出错。

   ·因为可空类型可能为空,于是很多运算法则将不再简单适用,比如A+B,如果A或者B当中有一个或者两个为可空类型,那么它们便不能简单相加,因为它们可能会为空,这时结果也就可能会为空,所以一定要先使用HasValue属性测试是否为空,或者使用GetValueOrDefault属性返回该基础类型所赋的值或默认值,再或者使用??运算符分配默认值,当前值为空的可空类型被赋值给非空类型时将应用该默认值,比如int?x=null;int y=x??-1;,但是切不可直接进行运算。

代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>///Class1 的摘要说明/// </summary>public class Class1{    public int? _id;    public int? Id    {        get { return _id; }        set { _id = value; }    }    public Class1()    {        //        //TODO: 在此处添加构造函数逻辑        //    }}
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class Default6 : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        Class1 c = new Class1();        Response.Write(c._id+"<br>");        Response.Write(c.Id);//结果什么都没有输出,在类的成员变量(全局变量),可控类型默认值为null,如果是非可空的int类型默认值为0.           }}

2、面向对象三大特征

  ->封装性:打包,便于管理
  ->继承性:将一个类库作为原始模板,在其上扩展另外的类库
      拿来主义
      解决代码的冗余
      单根性、传递性
  ->多态性:对象在调用同一个方法的时候表现出来的多种状态
    -->重写基类方法实现多态,父类统一调用,子类具体实现;对象.方法(根据对象选择对应的方法,实现多态)
    -->隐藏基类方法实现多态
    -->new则隐藏,over重写,隐藏看类型,重写只管新

3、new 申请内存->开辟内存->指向内存

  ->从子类构造方法往上找,依次调用构造方法(先将父类的成员初始化完毕,再将子类的成员初始化完毕)

4、里氏转换

   ->子类可以赋值给父类对象
   ->父类对象可以强制转换成对应的子类对象
      变量 is 类型          :   true/false (is 适用引用类型)
      父变量 as 子类型    :   结果/null

5、ref  和out

   ->方法内外变量不同,值相同,变量不同,如果希望内外变量相同,就可以用ref
   ->使用ref必须在使用前赋值,方法中可以改变这个变量的值,如果该改变相当于返回多个值
   ->out必须在方法中赋值后使用

6、dataGridView

   ->dataGridView绑定数据需要使用属性,所以可以用自动属性来操作。

7、单例模式

   1)将构造函数私有化
   2)提供一个静态方法,返回一个对象
   3)创建一个单例
public static Form2 FrmSingle=null;//全局唯一的单例;private Form2(){   InitializeComponent();}public static Form2 getSingle(){  if(FrmSingle=null){FrmSingle=new Form2();}               return FrmSingle}

8、XML

  1)严格大小写
  2)成对出现
  3)有且只能有一个

9、String

  ->构造方法
new string(char[])
new string (char,int)
  ->常用属性
索引(Char) str[3]
Length
  ->常用方法
增:
 构造方法
 string Insert (int startindex,string value)
   string string.Join(string splitStr,string[]);//SplitStr分割字符
 string Replace(string,string);//"123".Replace("2","222");将其中2替换成222
 string string.Concat(string[]);//将字符串合并成一个字符串
 string PadLeft(int,char)//在左边填充一定空格,以补齐它
 string PadRight(int,char)
       删:
 string Remove(int starIndex,int count);
 string Substring(int startIndex,int count);
 string Trim(params,char[]);
 string TrimStart();
 string TrimEnd();
       改:
 首先ToCharArray(),再Join或Concat
 string ToUpper();
       查:
 bool Contains(string);
 int IndexOf(char,int);
 int LastIndexOf(char,int);//获得文件名
 int IndexOfAny(char[],int);
 bool EndWith(string);
其他:
 bool string.IsNullOrEmpty(string);
 string[] r="as d f fg s ".Split(" ".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);

10、StringBuilder

  ->字符串不可变,长期拼接字符串性能较低
  ->Stringbuilder
         Append(string);
         AppendLine(string)
         AppendFormat("{0}{1}",1,“22”);

11、List<T>,Dictionary<TKey,TValue>

   List<T>  线性集合,长度可变
        -->增,Add() AddRange()
-->删,Remove(),RemoveAt()
-->改
-->查,bool Contains(T),IndexOf()
-->foreach(类型 临时变量 in 集合)
  Dictionary<TKey,TValue> 散列集合
-->增,Add(键,值)
-->删,RemoveKey
-->改,索引 dic["dictionary"]="词典()"
-->查,索引 ContainsKey

12、File静态

        AppendAllText
AppendAllLines
ReadAllText
WriteAllText
WriteAllLines

13、Directory静态

        string[] GetFiles(string)//返回指定路径下的所有文件
string[] GetDirectories(string)//返回路径下的所有子文件夹
bool Exis()

13、Path处理路径

获得后缀名
获得文件名
获得没有后缀名的文件名
获得全路径
        FileInfo DirectoryInfo DriverInfo















0 0