2013年7月21日

非序列化字段与反序列化完成后回调

摘要: 示例:public class Class1 : IDeserializationCallback{ public DateTime Birthday { get; set; } [NonSerialized] public int Age; public void OnDeserialization(object sender) { Age = DateTime.Now.Year - Birthday.Year; }} 阅读全文

posted @ 2013-07-21 14:34 yao2yao4 阅读(194) 评论(0) 推荐(0) 编辑

不同类型的委托变量的共同类型

摘要: 代码示例:var A = new Dictionary();A.Add(0, new Func(() => 123));A.Add(1, new Func(i => i * i));var a = A[0].Method.Invoke(this, null);var b = A[1].Method.Invoke(this, new object[] { 3 }); 阅读全文

posted @ 2013-07-21 11:18 yao2yao4 阅读(181) 评论(0) 推荐(0) 编辑

实现IDisposable接口的模式

摘要: 代码:public class Class2 : IDisposable{ ~Class2() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { //todo:清理托管资源 } ... 阅读全文

posted @ 2013-07-21 09:03 yao2yao4 阅读(170) 评论(0) 推荐(0) 编辑

2013年7月20日

序列化和反序列化

摘要: 代码:internal static class Class1{ private static readonly string XML_FOLDER = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CompanyName", "ProjectName"); private static readonly string XML_FILE = Path.Combine(XML_FOLDER, "config.xml" 阅读全文

posted @ 2013-07-20 21:50 yao2yao4 阅读(210) 评论(0) 推荐(0) 编辑

获取任意可序列化对象的Xml字符串,方便在日志中查看任一所感兴趣的对象。

摘要: 代码:public static string GetLoggingString(this object obj){ using (var stream = new MemoryStream()) { new XmlSerializer(obj.GetType()).Serialize(stream, obj); stream.Position = 0; var buffer = new byte[stream.Length]; stream.ReadAsync(buffer, 0, buffer.Length); ... 阅读全文

posted @ 2013-07-20 20:33 yao2yao4 阅读(246) 评论(0) 推荐(0) 编辑

2013年7月19日

Net数值计算MathNet.Numerics类库

摘要: 一、Net自带的数值计算:System.Numerics1、大整数BitInteger方法:除数和余数、最大公约数2、复数Complex属性:实部、虚部、量值、相位方法:共轭、倒数二、MathNet.Numerics1、组合Combinatorics方法:Combinations计算无重复的组合数目CombinationsWithRepetition计算带重复的组合数目Permutations计算无重复的排列数目Variations计算无重复的变化数目VariationsWithRepetition计算带重复的变化数目2、Complex32和Complex类似3、Evaluate方法:Poly 阅读全文

posted @ 2013-07-19 06:18 yao2yao4 阅读(5809) 评论(0) 推荐(0) 编辑

2013年7月18日

傅里叶变换

摘要: 1、引入MathNet.Numerics。2、var b = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };var a = b.Select(d => new Complex(d, 0)).ToArray();Transform.FourierForward(a);var c = a.Select(d => d.Magnitude).ToArray(); 阅读全文

posted @ 2013-07-18 21:38 yao2yao4 阅读(374) 评论(0) 推荐(0) 编辑

2013年7月15日

异步编程相关的总结

摘要: 指标:1、开始异步操作2、进度报告操作3、异步取消操作4、异步完成操作5、并行6、并发1、Thread类2、ThreadPool类3、基于委托的异步编程4、Asynchronous Programming Model(APM):BeginXXX和EndXXX类似的方法5、基于事件异步编程模式(EAP):一个或者多个以Async为后缀的方法和对应的Completed事件,并且这些类都支持异步方法的取消、进度报告和报告结果。6、BackgroundWorker组件7、Task-based Asynchronous Pattern(TAP):类中存在TaskAsync为后缀的方法8、Parallel 阅读全文

posted @ 2013-07-15 07:40 yao2yao4 阅读(193) 评论(0) 推荐(0) 编辑

2013年7月11日

ToolStripButton样式

摘要: public static class Extensions{ public static void SetMouseDownStyle(this ToolStripButton button) { button.ForeColor = Color.Yellow; } public static void SetMouseUpStyle(this ToolStripButton button) { button.ResetForeColor(); }} 阅读全文

posted @ 2013-07-11 08:48 yao2yao4 阅读(1862) 评论(0) 推荐(0) 编辑

C#指针与字节数组的操作

摘要: private static byte[] ReadBytesFromPtr(IntPtr intPtr, int bufferLength){ var result = new byte[bufferLength]; var count = bufferLength; for (var i = 0; i < bufferLength; i++) { result[i] = Marshal.ReadByte(intPtr, i); if (result[i] == 0) { count = i; ... 阅读全文

posted @ 2013-07-11 07:55 yao2yao4 阅读(4690) 评论(0) 推荐(0) 编辑

导航