Queue队列就是先进先出。它并没有实现 IList,ICollection。所以它不能按索引访问元素,不能使用Add和Remove。下面是 Queue的一些方法和属性 Enqueue():在队列的末端添加元素 Dequeue():在队列的头部读取和删除一个元素,注意,这里读取元素的同时也删除了这个元素。如果队列中不再有任何元素。就抛出异常 Peek():在队列的头读取一个元素,但是不删除它 Count:返回队列中的元素个数 TrimExcess():重新设置队列的容...
属性(Attribute)是C#程序设计中非常重要的一个技术,应用范围广泛,用法灵活多变。本文就以实例形式分析了C#中属性的应用。具体入戏:一、运用范围程序集,模块,类型(类,结构,枚举,接口,委托),字段,方法(含构造),方法,参数,方法返回值,属性(property),Attribute[AttributeUsage(AttributeTargets.All)]publicclass TestAttribute : Attribute{}[TestAttribute]//结构publicstruct TestStruct { }[TestAttribute]/...
where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。 1.接口约束。 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 IComparable<T> 接口:public class MyGenericClass<T> where T:IComparable { } 2.基类约束:指出某个类型必须将指定的类作为基类(或者就是该类本身),才能用作该泛型类型的类型参数。 这样的约束一经使用,就必须出现在该类型参数的所有其他约束之前。clas...
using(...){........}定义了一个范围,等范围结束以后进行资源的释放。例如:using(SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MyTest;User ID=sa;Password=sa")) { conn.open(); using(SqlCommand cmd = conn.CreateCommand()) {cmd.CommandText = "select count(*) from studentInfo";cmd.ExecuteScalar();} } 这样,当运行完成后就会释放使用的数据库资源,减轻数据库的负担。原文:https://www.c...
C#编程语言非常优美,我个人还是非常赞同的。特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美之处不仅仅是语法糖方面还有就是体现在LINQ和Lambda表达式。本篇文简单介绍一下关于C#当中LINQ表达式和其对应的Lambda表达式的用法,关于这两部分内容的相关参考资料:人民邮电出版社《C#程序设计及应用教程》(第3版)博客园...
class Program{static void Main(string[] args){var count = 0;var taskList = new Task[10];Stopwatch sp = new Stopwatch();sp.Start();// 不要意外复制。每个实例都是独立的。SpinLock spinLock = new SpinLock();for (int i = 0; i < taskList.Length; i++){taskList[i] = Task.Run(() =>{bool lock = false;for (int j = 0; j < 10_000_000; j++){spinLock.Enter(ref _lock);count++;spinLock.Exit();lock = false;}});}sp.S...
c# Task.FromResult 的基本用法和实例This method is useful when you perform an asynchronous operation that returns a Task object, and the result of that Task object is already computedThere are two common use cases I‘ve found:When you‘re implementing an interface that allows asynchronous callers, but your implementation is synchronous.When you‘re stubbing/mocking asynchronous code for testing上面...
List<T>和List的用法是一模一样的,不同的是,List支持任何类型而List<T>只支持T类型,T是在定义时指定的类型.如:List<string> list=new List<string>;这样的话,每个list里的元素都是字符串.同理,List<int> list=new List<int>;这样的话,每个list里的元素都是整形. List<T>是一个实现List接口反省集合,分开说的话List理解成一个集合,T就代表一个类型,T可以是任何类型,主要用于强制规范一个集合内存放的数据类型必须一致,这样避免了一些...
ToolTip它能够为我们的软件提供非常漂亮的提示信息,提高软件的可用性,给用户比较好的体验。 使用,在窗体加载时加载以下代码: var toolTip1 = new ToolTip(); toolTip1.AutoPopDelay = 10000; toolTip1.InitialDelay = 500; toolTip1.ReshowDelay = 500; toolTip1.ShowAlways = true; toolTip1.SetToolTip(this.label26, @"系统所有会员分三类【A类、B类、C类】 A类:最近30天累计...
using一般有着以下几种用法:1、直接引入命名空间a、using System ,这个是最常用的,就是using+命名空间,这样就可以直接使用命名空间中的类型,而免去了使用详细的命名空间b、使用全限定名不用使用using System;直接在程序中调用System.Console.WriteLine("Hello C#");第一种方法是比较常用的方法,可以一次导入整个命名空间到当前命名空间,比较方便。不过如果在当前命名空间只使用一次命名空间中的某个类,例如上例使用全限定名...
1. async与 await 成对出现 async 在方法前使用 ,方法体面面用 await .2. 使用async 和await定义异步方法不会创建新线程.3.await 后面一定是一个扫行时间长的任务,要用 Task.Run(()=>{ }); 类似的代码来执行.4.返回写成 Task<Type>. 后面的代码要等 这个执行完后 再执行.5.界面不阻塞例子:private async void button2_Click(object sender, EventArgs e) { //异步方法 this.button2.Enabled = fa...
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。 一、DataTable简介 (1)构造函数 DataTable() 不带参数初始化DataTable 类的新实例。 DataTable(string tableName) 用指定的表名初始化DataTable 类的新实例。 DataTable(string tableName, string tableNamespace) ...
这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下.本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解。具体如下:yield关键字用于遍历循环中,yield return用于返回IEnumerable<T>,yield break用于终止循环遍历。有这样的一个int类型的集合:staticList<int> G...
要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) Dictionary的描述1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成2、任何键都必须是唯一的3、键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值4、Key和Value可以是任何类型(string,int,custom class 等) Dictionary常用用法:以 key 的类型为 int , value的类型为s...
c# 中关于: base()用法,在此记录一下,方便查阅1.this是标识当前资源对象的,而base是基于父级的。 2.base发挥了期灵魂级的作用——多态 3.base子类可以访问父类成员 4.base调用父类方法必须重写父类方法 5.base子类构造函数直接访问:base父类构造方法 6.base同样不能用于静态方法publicabstractclass HttpBasedTransport : ClientTransportBase{protected HttpBasedTransport(IHttpClient httpClient, string transportName): b...