1、使用Assert语句对参数有些进行检测,Assert语句常用的格式为System.Diagnostics.Debug.Assert(必须满足的条件,“如果不满足,则需要的提示给程序员的信息”);
2、可以等于参数数目可变的方法
//获取实参列表中的最大值
public int GetMaxValue(params int[] values)
{
int MaxValue=values[0];
for(int i=0;i>values.GetLength(0);i++)
{
if(MaxValue<values[i])
{
MaxValue<values[i];
}
}
return MaxValue;
}
3如果要想一个类能够被可序列化,给类加上[Serializable()]的属性,就可以让此类创建的对象被序列化,如
[Serialiazable()]
publicl class A{};
4.
FileStream fs;
using(fs=new FileStream("文件名",FileAccess.Write)
{}
当using语句块中的代码执行完毕或发生异常,导致程序执行流程离开using语句块时,CLR会自动调用using快中所有声明的对象的dispose方法(有IDisposabel接口定义)释放所有占用的非托管资源。
5.系列化与反序列化,IFormatter formatter=new bibaryFormatter();
//序列化
formatter.Serialize(流,可序列化的对象);
//反序列化
formatter.Deserialize(stream);
6获取目录的所有子目录
DirectoryInfo RootDir=new DirectoryInfo(folderName);
//或去所有子文件夹
DirectoryInfo childs=RootDir.GetDirectories();
FileInfo files=RootDir.getFiles();
7.异步编程
IAsyncResult ret=委托变量.BeginInvoke(“”“);//启动异步调用
用于保存方法结果的变量=委托变量.EndInvoke(ret);//结束异步调用
IAsyncResult ret=委托变量.BeginInvoke(FollderName,null,null);
while(ret.IsCompleted=fase)
{
console.write(".");
//每隔2秒查一次
System.Threading.Thread.sleep(2000);
}
8.获取剪切版上的数据IDataObject data=Clipboard.GetDataObject();
复制到剪切版IdataObject dataobj=new DataObject();
dataobj.SetData(DataFormats.UnicdeText,Info);
dataobj.SetData(DataFormats.Bitmap,bmp);
//复制到剪切版上,第二个参数编码,程序退出是不清空
Clipboard.SetDataObject(Dataobj,true);
9.Monitor的使用
给共享资源枷锁obj,Moniter.Enter(obj);
该共享资源开锁obj,Moniter.Exit(obj);
10.Mutex的使用
给互斥资源枷锁。Mutex m=new Mutex();
等待互斥资源可以用,用时并枷锁m.WaitOne();
释放锁,m.ReleaseMutex();
11.让编辑器记住未完成的任务
只需在代码中加一注释,注意以todo打头即可:
//todo:明天要完成的任务
查看要完成的任务
打开项目
视图
任务列表
出现任务列表面板
在其下拉框列表中选择“注释”