ArrayList list = new ArrayList(); list.Add(); list.AddRange(); list.clear();清空所有元素 list.RemoveAt(0);根据下标去删除元素 list,RemoveRange(0,3);根据下标去移除一定范围的元素 list.Sort();//升序排列 list,Reverse();反转 list,Insert(1,“插入的”);在指定的位置插入一个元素 list.InsertRange(0,new string[](“张三”,“李四”});在指定的位置插入集合 bool b=list,Contains(1);判断是否包含某个指定的元素
HashTable
HashTable遍历foreach(var item in ht.Keys){}
字典遍历foreach(KeyValuePair<int string> kv in dic)
1 2 3
//区分字典与哈希表 Hashtable ht = new Hashtable(); Dictionary<int, string> zd = new Dictionary<int, string>();
实现多态的方式
1.虚方法
相当于JAVA的@override方法;
1 2
父类:public virtual void hello(){}; 子类: public override void hello(){};
2.抽象类(抽象类中可以有非抽象成员,子类继承抽象类,必须实现所有抽象方法,属性,变量)
3.接口(类实现接口,必须重写成员 。结构中不允许添加访问修饰符,默认public )
访问修饰符
protected :受保护的,只能在当前类的内部以及该类的子类中访问。 public :公开的公共的 private :私有的,只能在当前类的内部访问 internal :只能在当前项目中访问。在同一个项目中, internal 和 public 的权限是相同的 protected internal : protected + internal
两个特殊类修饰符:partial部分类/sealed密封类(不允许被继承)
文件读写及序列化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//序列化 person aa = new person("aa","18"); using (FileStream fs = new FileStream(@"C:\Users\DELL\Desktop\111.txt",FileMode.Append,FileAccess.Write)) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs,aa); } //反序列化 person p; using (FileStream fs = new FileStream(@"C:\Users\DELL\Desktop\111.txt",FileMode.OpenOrCreate,FileAccess.Read)) { BinaryFormatter bf = new BinaryFormatter(); p = (person)bf.Deserialize(fs); } p.oi();
多线程
1 2 3
Thread th = new Thread(method); th.IsBackground = true; th.Start(object);
委托
定义委托:public delegate void DelSayHi(string name);
1.使用中间类
1 2
SayHi("name",SayHiChinese); public static void SayHiChinese(string name,DelSayHi del){...}
2.将方法交给委托
1 2
DelSayHi del = SayHiChinese; del("name");
3.匿名函数
1 2 3 4 5 6
DelSayHi del = delegate(string name){ ... } //简化 DelSayHi del = (string name)=>{...} del("name");
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;
namespace WindowsFormsApp3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private Socket sockeyWatch; private Socket socketSend; private void button1_Click(object sender, EventArgs e) { sockeyWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp); IPAddress ip = IPAddress.Any; IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(sport.Text)); sockeyWatch.Bind(point); MessageBox.Show("success"); sockeyWatch.Listen(10);
Thread th = new Thread(Listen); th.IsBackground = true; th.Start(sockeyWatch); }
void Listen(object o) { Socket socketWatch = o as Socket; while (true) { try { socketSend = socketWatch.Accept(); dicSocket.Add(socketSend.RemoteEndPoint.ToString(),socketSend); cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString()); ShowMsg(socketSend.RemoteEndPoint.ToString() + ":connect success!"); //开启线程接收消息 Thread th = new Thread(Recive); th.IsBackground = true; th.Start(socketSend); }catch{Console.WriteLine("监听时有错误但被捕获了");} } }
private Dictionary<string, Socket> dicSocket = new Dictionary<string, Socket>(); void Recive(object o) { Socket socketSend = o as Socket; while (true) { try { byte[] buffer = new byte[1024 * 1024 * 2]; //实际有效字节 int r = socketSend.Receive(buffer); if (r == 0) { break; }