随笔分类 - C#
摘要:服务端: [WebMethod] public string GetNewService(string version) { //通过版本号进行比较 if (version == "v1.0") { ...
阅读全文
摘要:主要用到了[单例,抽象工厂,缓存,N层,反射]等知识。架构图如下:解决方案用到的项目列表如下:在接口项目中,定义一个IUER接口。namespace IDAL{ public interface IUser { int Delete(string userId); int Delete(Entity.User user); }} 2.在DALSQLProvider项目中,进行对IUSER接口的实现,针对SQL SERVER数据库。[Oracle同]namespace DALSQLProvider{ public class User : ID...
阅读全文
摘要:简易阻止:Sleep,阻止给定的时间周期;Join,等待另一个线程完成。一旦被阻止,线程立刻放弃分配给他的CPU资源,并且ThreadState属性值改为WaitSleepJoin。停止阻止的方式:(1)操作超时(2)通过Thread的Interrupt中断了(3)通过Thread的Abort放弃了.Thread.Sleep(Timeout.Infinite);//休眠直到中断 Thread.Sleep(TimeSpan.FromSeconds(1));//休眠一秒 Thread.Sleep(0);//暂时的放弃CPU,时间刚刚够其他时间片里的线程执行。Join方法也接收一个使用毫秒或用Tim
阅读全文
摘要:线程被一个线程协调程序(一个CRL委托给操作系统的程序)管理着。线程协调程序确保将所有活动着的线程分配适当的执行时间,并且等待或阻止的线程是不消耗CPU资源的。线程用Thread类来创建, 通过ThreadStart委托来指明方法从哪里开始运行。public delegate void ThreadStart(); static void Main(string[] args) { // Thread t = new Thread(new ThreadStart(Go)); Thread t = new Thread(Go);//与上一...
阅读全文
摘要:GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。1.GET用于获取信息,而且是安全(对信息源而言)和幂等的。 POST可能更改服务器上资源内容,如post更新博客评论。2.服务端获取GET请求参数用Request.QueryString。 获取POST请求参数用Request.Form。3.Get 方法通过 URL 请求来传递用户的数据,如:http://localhost:7045/Default.aspx?txtname=rew&Button1=Button,用户可以看到这个过程。 Post方法将表单内字段与各属性值放在html Header中交由action所指
阅读全文
摘要:Lookup非常类似于Dictionary,但是把键映射在一个值集上。必须调用ToLookup方法创建Lookup对象。Lookup对象是不可变的,无法向对象添加,移除元素。public class User { public string Address; public string Name; public int Age; } class Program { static void Main(string[] args) { List users = new List {...
阅读全文
摘要:字典(散列表):允许按照某个键来访问元素,能根据键快速查找元素,也可以自由添加,删除元素。比较像List类,但没有list向后移动元素的性能开销。.net中最主要的字典类是Dictionary。字典中的键:用作字典中键的类型必须重写Object类中的GetHashCode()方法。调用GetHashCode()方法主要是为了获得元素的位置。键还必须实现IEquatable.Equals方法或重写Object类的Equals()方法。因为不同的键代码可能返回相同的散列代码,所以使用equals方法比较键。字典比较两个键是否相等,调用A.Equals(B)方法,如果A.Equals(B)返回tru
阅读全文
摘要:有序列表:SortedList,基于键对内容进行排序。对实例对象增加项时,用Add()方法添加,当key存在,则程序报异常;另一种添加项的方法是基于索引器,如果索引器存在,则更新value。 var books = new SortedList(); books.Add("001", "张三与李四"); books.Add("002", "十点钟开始"); books.Add("004", "扒马褂"); books["003"] = "宇宙牌香
阅读全文
摘要:栈:实现了与队列一样的接口。是一种后进先出的集合结构。public class Stack : IEnumerable, ICollection, IEnumerable class Program { static void Main(string[] args) { var chars = new Stack(); chars.Push('A'); chars.Push('B'); chars.Push('C'); foreach (char it...
阅读全文
摘要:队列:先进先出的集合结构。类似于List,容量也是根据需要成倍的增加。public class Queue : IEnumerable, ICollection, IEnumerable//Document文档类;DocumetManger文档控制类,用于添加文档,获取移除文档;ProcessDocuments类用于在单独的一个线程中处理队列中的文档。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace Abstract
阅读全文
摘要:.net framework为动态列表提供了泛型类List.继承了6个接口,其定义如下:public class List : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable List list = new List(8); //创建列表 Console.WriteLine(list.Count.ToString());//列表元素数量 Console.WriteLine(list.Capacity.ToString());//列表容量 list.TrimExcess();// 去除不需要的容量,当数量达到容量9
阅读全文
摘要:一.动态创建对象构造函数无参数构造对象class MyClass { privatestring _name; publicstring Name { get { return _name; } set { _name = value; } } } class Program { staticvoid Main(string[] args) { Assembly myass = Assembly.GetExecutingAssembly();//获取程序集 MyClass my = myass.CreateInstance("ConsoleApplication7.MyClass&q
阅读全文
摘要:[Obsolete("过时的",false)]//特性,标明XXX已过时 static void sendMessage() { Console.WriteLine("null"); } static void sendMessage(string str) { Console.WriteLine(str); } static void Main(string[] args) { sendMessage(); //编译时,这里会有一个警告 sendMessage("hhaha"); Console.Read(); }以上,静态方法se
阅读全文
摘要:泛型利用“参数化类型”将类型抽象,实现更为灵活的复用,类型安全,更高的效率,更强的约束。C#泛型由CLR运行时支持,区别于C++的编译时模板机制。C#动态泛型能力能够避免C++静态模板产生的代码膨胀问题。因为C#实例化的类型相同,JIT编译器会重复使用该类型。C#泛型可以应用强大的反射技术。C#泛型实现对类型的“显示约束”,不比C++模板基于签名的隐式约束所具有的的灵活性。一个简单实现的泛型排序如下:由于是排序,此处需要确定能比较,所以有where T : IComparable的约束。publicclassMyClass where T : IComparable { publicvoid
阅读全文
摘要:XML文件的简单增改删,每一个都可以单独拿出来使用。新创建XML文件, Oberon's Legacy Corets, Eva 5.95 实现如下://插入节点 protected void btn_Add_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(@"E:\ruxiaomeng\Simple\C++\CLR\stlclr\StlClr Sample\XMLTest\bookstore.xml"); XmlNode root = doc.Sele
阅读全文
摘要:Linq to SQL 简单的增删改操作。新建数据库表tbGuestBook.结构如下:新建web项目,完成相应的dbml文件。留言页面布局如下 姓名 留言 - 管理员回复: 后台代码实现:DataGuestBookDataContext content =new DataGuestBookDataContext("Data Source=10.1.0.1;Initial Catalog=app;Persist Security Info=True;User ID=sa;Password=XXX"); protected void Page...
阅读全文
摘要://-----匹配单字符形式------------ //"."匹配任意单个字符,包括其本身,可以连续使用 //[dt]中括号为特殊标记,匹配中括号内的任意一个。可以区间方式填写[0-9][0-9a-z]. //[^abc]反义字符组,匹配中括号外的任意一个字符![^A-Z] //当匹配元字符(如:.[])等,需要转义“\” //匹配数字类型“\d,所有单个数字,与[0-9]相同”; //所有非数字,“\D,与[^0-9]相同”。 //“\w,所有单个大小写字母、数字、下划线,与 [a-zA-Z0-9_]相同” //“\W,所有单个非大小写字母、非数字、非下划线,与 [^a
阅读全文
摘要:可空类型:可空类型可以表示基础类型的所有值和null。可空类型的基础类型必须为值类型,不能是引用类型。定义方式:System.Nullable val; T? val;static void Main(string[] args) { int? a=null; int y = a ?? -4;//赋值,如果a为NULL,则y=??后面的值。 Console.WriteLine(a.GetValueOrDefault()); Console.WriteLine(y); System.Nullable b = 9; Console.WriteLine(b); System.Nullable c =
阅读全文
摘要:扩展方法:静态类包含的方法必须都是静态方法。扩展方法允许我们在不改变原有类的情况下,扩展现有类型中的实例方法,是一种编译时的技术。publicstaticclassMyClass //必须是静态类{publicstaticvoid getdata(thisstring s) //静态方法,this不可少{Console.WriteLine(s.Length);}}classProgram{staticvoid Main(string[] args){string str ="rxm";str.getdata(); //实例方法的调用!Console.Read();}}对象与
阅读全文
摘要:[AttributeUsageAttribute(AttributeTargets.All, Inherited = false, AllowMultiple = true)]//通过此定义了一个特性My,可用于任何地方。 public class MyAttribute : Attribute//构造函数,接受一个参数,一个返回string类型的方法 { private string str; public String Name { get; set; } public MyAttribute(string s) { this.str = s; } public string GetStr
阅读全文

浙公网安备 33010602011771号