1 //变量obj实际指向的是chinese类型的对象,调用ToString方法的时候,发现object类的tostring()方法是virtual类型, 2 //所以先看chinese类有木有override,如果有则直接调用chinese的override方法, 3 //如果木有则看chinese的父类有没有override, 4 //直接递归到object类,都木有,则调用object的ToString()方法 5 Object obj=new Chinese(); 6 obj.ToString();
CTS(Common Type System)-----bool和Boolean,int和Int32之间的区别:
基于接口编程:
变量(参数、返回值等)的类型能用父类就不要用子类,能用接口就不要用类,返回值、属性、参数等等,类型越靠近Object越好,尽量不要用具体的类型。
第三种写法最好。
写一个可以通过配置文件来分别从Access、MSSQL中读取数据的类
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Configuration;//读取App.config的类库 5 using System.Data; 6 using System.Data.OleDb;//链接ACCESS的类库 7 using System.Data.SqlClient;//链接MSSQL的类库 8 using System.Drawing; 9 using System.Text; 10 using System.Windows.Forms; 11 12 namespace 接口ADO 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 private void btnInsert_Click(object sender, EventArgs e) 22 { 23 //读取App.config中的连接字符串 24 string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 25 26 //读取App.config中的providerName 27 string providerName = ConfigurationManager.ConnectionStrings["providerName"].ConnectionString; 28 29 //声明IDbConnection类型的变量 30 IDbConnection conn; 31 32 //当App.config中的providerName值为MSSQL 33 if (providerName == "MSSQL") 34 { 35 conn = new SqlConnection(connStr); 36 } 37 //当App.config中的providerName值为ACCESS 38 else if (providerName == "ACCESS") 39 { 40 conn = new OleDbConnection(connStr); 41 } 42 //抛出异常 43 else 44 { 45 throw new Exception("未知providerName"); 46 } 47 //using不能少------Dispose() 48 using (conn) 49 { 50 conn.Open(); 51 52 //using不能少------Dispose() 53 using (IDbCommand cmd = conn.CreateCommand()) 54 { 55 cmd.CommandText = "insert into T_Person(name,age) values(www,18)"; 56 cmd.ExecuteNonQuery(); 57 } 58 } 59 MessageBox.Show("OK"); 60 } 61 } 62 }
原文地址:http://www.cnblogs.com/skyl/p/3848654.html