随笔分类 - C#
摘要:一、各种旋转、改变大小注意:先要添加画图相关的using引用。//向右旋转图像90°代码如下:private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){Graphics g = e.Graphics;...
阅读全文
摘要:ctrl+s 保存(这个确实很简单,要说常用,这玩意绝对排名第一)ctrl+Shift+S 保存所有VS中打开的所有文件ctrl+O 打开新文件ctrl+Shift+O 打开项目ctrl+Shift+A 当前项目中添加新建项ctrl+F4 关闭当前打开页ctrl+F6 ...
阅读全文
摘要:首先先说一下IComparable和IComparer的区别,前者必须在实体类中实现,后者可以单独出现在一个排序类中,即此类只包含一个compare方法。 Array类使用快速算法对数组中的元素进行排序。sort()方法需要数组中的元素实现IComparable接口,下例演示了一个自定义的排序: class Program { static void Main(string[] args) { Person[] persons ={ new Person{firstName ...
阅读全文
摘要:类的对象存储在堆中,引用存储在栈里面,这样数据的生存期可以有很大的灵活性,但性能会有一定的损失。因为托管堆的优化,这种性能损失比较小。但是,有时候仅需要一个小的数据结构,此时类提供的功能多于我们需要的功能,出于性能考虑,我们最好用结构。看下面的代码: class Dimensions { public double Length; public double Width; } 假如我们试着在计算机上布置家具,并存储每件家具的尺寸,表面看来使字段变为公共字段会违背编程原则,但关键是我们实际上并不需要类的全部功能。现在有两个数字,把其当作一对来处...
阅读全文
摘要:namespace Arbor{ /// /// LEFT左子树,RIGHT右子树 /// enum Position { LEFT, RIGHT }; /// /// LINK指向孩子,THREAD指向后继 /// enum Tag { LINK, THREAD }; /// /// 二叉树节点的抽象定义 /// interface IBinNode { bool isLeaf(); object Element { get; set; } IBinNode L...
阅读全文
摘要:堆栈:namespace StackApply{ public class CStack { //调用链表类 private Clist m_List; public CStack() { //构造函数 m_List = new Clist(); } /// /// 压入堆栈 /// public void Push(int PushValue) { //参数: int Pu...
阅读全文
摘要:不常用,可以看一下实现原理namespace UnilateralismChainTable{ // 结点类 public class ListNode { public ListNode(int NewValue) { Value = NewValue; } //前一个 public ListNode Previous; // 后一个 public ListNode Next; // 值 public int Value; ...
阅读全文
摘要:1、foreach语句C#编译器会把foreach语句转换为IEnumerable接口的方法和属性。1 foreach (Person p in persons)2 {3 Console.WriteLine(p);4 }foreach语句会解析为下面的代码段。调用GetEnumerator()方法,获得数组的一个枚举在while循环中,只要MoveNext()返回true,就一直循环下去用Current属性访问数组中的元素 IEnumerator enumerator = persons. GetEnumerator(); while (enumerator.MoveNext()) { Per
阅读全文
摘要:private void button1_Click(object sender, EventArgs e) { System.Text.RegularExpressions.MatchCollection matches =//使用正则表达式查找重复出现单词的集合 System.Text.RegularExpressions.Regex.Matches(label1.Text, @"\b(?\w+)\s+(\k)\b", System.Text. RegularEx...
阅读全文
摘要:private void btn_GetTime_Click(object sender, EventArgs e) { lab_time.Text = DateTime.Now.ToString("d") + "\n" +//使用指定格式的字符串变量格式化日期字符串 DateTime.Now.ToString("D") + "\n" + DateTime.Now.ToString("f") + "\n" + DateTime.Now.T...
阅读全文
摘要:十进制转其他进制的方法:Convert.ToString(value,format)其他进制转十进制的方法:Convert.ToInt64(value,format)非十进制转非十进制就是先把其转成十进制,然后再转成其他进制,具体效果如下:代码如下:先建一个转换类 public class Transform { internal string TenToBinary(long value) { return Convert.ToString(value, 2); } internal string TenTo...
阅读全文
摘要:原理:假设取3位小数1、2.444442、得到0.000553、1+2=2.445004、得到2.445 /// /// 计算double值四舍五入的方法 /// /// 进行四舍五入的数值 /// 保留的小数位 /// 返回四舍五入后的double值 internal double Round(double dbl, int i) { string P_str_dbl = dbl.ToString();//将double数值转换为字符串 strin...
阅读全文
摘要:private void btn_GetCount_Click(object sender, EventArgs e) { int P_scalar = 0;//定义值类型变量并赋值为0 Regex P_regex = //创建正则表达式对象,用于判断字符是否为汉字 new Regex("^[\u4E00-\u9FA5]{0,}$"); for (int i = 0; i < txt_str.Text.Length; i++)//遍历字符串中每一个字符 { ...
阅读全文
摘要:主要内容是下面两行代码:取得文本的第一个字母的编码。string P_str_temp = "abc";string P_str = Encoding.GetEncoding("unicode").GetBytes(new char[] { P_str_temp[0] })[0].ToString();具体事件如下: private void btn_ToASCII_Click(object sender, EventArgs e) { if (txt_char.Text != string.Empty)//判断输入是否为空 { ...
阅读全文
摘要:Type type = typeof(System.Int32);//获得int类型的Type对象 foreach (MethodInfo method in type.GetMethods())//遍历string类中定义的所有公共方法 { rtbox_text.AppendText( "方法名称:" + method.Name + Environment.NewLine);//输出方法名称 foreach (ParameterInfo paramet...
阅读全文
摘要:Queue队列就是先进先出。它并没有实现 IList,ICollection。所以它不能按索引访问元素,不能使用Add和Remove。下面是 Queue的一些方法和属性 Enqueue():在队列的末端添加元素 Dequeue():在队列的头部读取和删除一个元素,注意,这里读取元素的同时也删除了这个元素。如果队列中不再有任何元素。就抛出异常 Peek():在队列的头读取一个元素,但是不删除它 Count:返回队列中的元素个数 TrimExcess():重新设置队列的容量,因为调用Dequeue方法读取删除元素后不会重新设置队列的容量。 Contains():确定某个元素是否在队...
阅读全文
摘要:概述数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后 才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。加密建立在对信息进行数学编码和解码的基础上。加密类型分为两种,对称加密与非对称加密, 对称加密双方采用共同密钥。非对称加密,这种加密方式存在两个密钥,一个是公共密钥(对外公开),一种是私人密钥(对外保密)。 一、摘要算法数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整
阅读全文
摘要:c#中类型分为值类型和引用类型,值类型对象赋值是本身就是赋的自身的一个副本,而引用类型赋值时则赋的是指向堆上的内存,假如我们不想赋这个地址而想将对象赋过去要怎么做呢?首先要知道拷贝分为浅表拷贝和深层拷贝,浅表拷贝得到一个新的实例,一个与原始对象类型相同、值类型字段相同的拷贝。但是,如果字段是引用类型的,则拷贝的是该引用, 而不是的对象。若想将引用字段的对象也拷贝过去,则称为深拷贝。 为了实现拷贝,本文总结了以下几种方法。1.首先就是最笨的方法,传说中的“人工拷贝”,就是将引用里的所有值对象和具有值特征的string对象一一赋给新对象,这种方式代码量过大而且维护起来相当麻烦,所以能不用就不用..
阅读全文
摘要:const与readonly 很像,都是将变量声明为只读,且在变量初始化后就不可改写。那么,const与readonly 这两个修饰符到底区别在什么地方呢?其实,这个牵扯出C#语言中两种不同的常量类型:静态常量(compile-time constants)和动态常量(runtime constants)。这两者具有不同的特性,错误的使用不仅会损失效率,而且还会造成错误。 首先先解释下什么是静态常量以及什么是动态常量。静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。而动态常量的值则 是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值...
阅读全文
摘要:参考资料:http://www.yesky.com/20010207/158097.shtmlhttp://www.ftponline.com/china/XmlFile.aspx?ID=242http://research.microsoft.com/~chadv/java_com2.htmhttp://blogs.msdn.com/jfoscoding/archive/2005/04/07/406341.aspx.NET支持两种线程模型:STA和MTA。STA(single threaded apartments)。apartment只是一个逻辑上的概念,它可以包含一个或多个线程。一个Ap
阅读全文