技术探索
  • 使用C#将指定对象压缩并序列化为二进制

    2013-09-23
    1949
    C#语言
    本文介绍如何将一个对象(任何类型)压缩,并序列化为二进制。通过该种方式处理后,可以大幅减小数据占用空间。如果再将该二进制数转化为Base64String,就可以保存到磁盘,从而节省空间。///<summary>///将指定对象序列化为二进制。///</summary>///<paramname="obj">要序列化的对象。</param>///<paramname="iscompress">是否压缩。</param>publicbyte[]SerializeToBytes(objectobj,booliscompress=true){if("DataTable"==obj.GetType().Name)((System.Data.DataTable)obj).
  • 在.NET环境创建加密的SQLite数据库

    2013-09-18
    1998
    SQLite数据库
    1、创建空的sqlite数据库/*数据库名的后缀可直接指定,甚至没有后缀都可以*//*方法一:创建一个空sqlite数据库,用IO的方式*/FileStreamfs=File.Create(“c://test.db“);/*方法二:用SQLiteConnection*/SQLiteConnection.CreateFile(“c://test.db“);创建的数据库是个0字节的文件。2、创建加密的空sqlite数据库/*创建一个密码为password的空的sqlite数据库*/SQLiteConnection.CreateFile(“c://test2.db“);SQLiteConnectioncnn=newSQLiteConnection(“DataSource=c://test2.db“);cnn.Open();cnn.ChangePassword(“password“);3、给未加密
  • 在C#中如何读取枚举值的描述属性

    2013-07-30
    2531
    C#语言
    在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思。比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”)。有下面的枚举:publicenumEnumLanugage{[System.ComponentModel.Description("中文")]Chinese,English}我们要获取的就是 Chinese 中的说明文字“中文”。publicstringGetEnumDescription(EnumenumValue){stringstr=enumValue.ToString();System.Reflection.FieldInfofield=enumValue.GetType().GetField(str);object[]objs=field.GetCustomAttributes(typeof(Syste
  • 对WebBrowser控件设置独立的代理服务器

    2013-06-19
    1864
    C#语言
    我们用WebBrowser控件的时候,有时需要对它使用代理服务器。一种常规的做法是修改全局IE代理设置。这种方式可以通过修改注册表实现,但这样做就把所有的IE引擎都给设置了,网上介绍的大都是这种方法,并且往往并不是我所想要的效果,这里就不介绍了。另外一种方式是通过函数InternetSetOption实现修改当前程序中的WebBrowser设置,使用方式如下:static class WebBrowserProxy{struct Struct_INTERNET_PROXY_INFO{public int dwAccessType;public IntPtr proxy;public IntPtr proxyBypass;};[DllImport("wininet.dll", SetLastError = true)]static extern bool Internet
  • 如何将一个字符串拆分成数组?

    2013-06-14
    1556
    C#语言
    本文介绍的方法是 .net 中Split方法的补充,使用起来更加方便。////// 按指定的字符将字符串分隔为字符串数组。////// 要分隔的字符串。/// 分隔符号。public static string[] Split(string value, string separator){if (value.IndexOf(separator) == -1) return new string[] { value };return Regex.Split(value, Regex.Escape(separator), RegexOptions.IgnoreCase);}
  • C#中将指定的阳历日期转化为阴历

    2013-06-08
    1024
    C#语言
    本文提供一种简单的方法,可以将阳历日期转换为阴历,并用中文格式输出。System.Globalization中的ChineseLunisolarCalendar可以得到阴历的年、月、日,但由于涉及到润月的问题,所以需要先处理后才能输出。不知道微软为什么不直接提供一个将阳历转为阴历的方法呢?using System.Globalization;////// 根据阳历获取指定的阴历。////// 阳历日期。public string ChineseDateTime(DateTime date){ChineseLunisolarCalendar ch = new ChineseLunisolarCalendar();int year = ch.GetYear(date);int month = ch.GetMonth(date);int leapmonth = 0;if (date.Month
  • 在C#中使用TcpClient与TcpListener发送与接收消息

    2013-05-28
    2140
    C#语言
    本文介绍在C#中如何利用TcpClient与TcpListener进行简单的消息发送和接收。在使用时要注意,如果是本机发送与接收,发送消息时IP用127.0.0.1,如果是非本机接收,请在接收端打开相应的端口(本例中为13)。using System.IO;using System.Net;using System.Net.Sockets;using System.Threading.Tasks;//接收方public Form1(){InitializeComponent();Task.Factory.StartNew(() =>{TcpListener listener = null;TcpClient client = null;string message = string.Empty;while (true)//循环接收消息,否则只能接收一次{try{listener =
  • 遍历 JSON 的键值对

    2013-05-27
    3610
    JS语言
    json在实际中运用非常广泛,下面就介绍如何遍历json结构中的所有元素及其值。//JSON数据源:var nation = {China: '中国',USA: '美国',UK: '英国'};//遍历:for(var key in nation){alert(key + '=' + nation[key]);}这里的遍历有点象在 C# 中遍历 NameValueCollection 。