C#实现的一个内存Ini类
正式用上C#了,写了一个多星期代码了,感觉上来说,总体还蛮顺手的,直接拿来就写了。只是写的过程中,总是想着对象释放,这个比较蛋疼,我看了一些网上的代码貌似都是有new了,但是后面都没有释放,俺们还是写Delphi之类的习惯了,对象创建一写上,马上要在对应的位置写一个释放。貌似C#不必,但是总不放心,虽然说有垃圾回收机制,但是总怕有个闪失神马的。。。。。这个方面还得多找找相关资料看看具体的
工作原理。
C#的很多特性,在写代码的时候是比较爽的,但是,也有时候比较蛋疼,我这写了几天,发现的几个比较蛋疼的就是调用Windows API还有就是以往在
Delphi中用习惯的操作类库没得。不晓得,为啥微软不把他的那个NativeMethod的API库开放出来,如果开放了,直接用那个玩意不就可以直接用API咯,现在要用一下,每次都得DLLImport或者自己来封装,蛋疼啊!也可能是我不知道有这样的库吧!-_-!然后就是貌似没见到Ini操作的类库,莫非微软已经不用这个了,虽然说.net自己带有一个配置类可以直接操作,但是有时候这个还是需要的,网上
搜索了一下,貌似都是自己封装的类库。这个也比较蛋疼。既然这个没有,那么像Delphi一样的TMemIniFile这个内存Ini操作类库估计就更蛋疼了。实际上这个是非常有必要的,因为很多时候,数据库中可能会存放这样的结构,这样就不会存在一个实际的Ini文件,那么WinAPI就起不了啥作用了,内存Ini解析就显得相当有必要。网上找了一番,确实也没发现内存操作的Ini类库。于是就自己实现了一个内存操作Ini的一个类库,现学现卖,开放给需要的人了,实际上代码并不难-_-!另外,初写C#或许难免有很多位置写的不太规范,希望大家有能给出中肯的指点!
///
/// Ini节点 /// public class IniSection { private Dictionary
FDictionary;//节点值 private String FSectionName;//节点名称 public IniSection(String SName) { FSectionName = SName; FDictionary = new Dictionary(); } public string SectionName { get { return FSectionName; } } public int Count { get { return FDictionary.Count; } } public void Clear() { FDictionary.Clear(); } //增加键值对 public void AddKeyValue(string key, string value) { if (FDictionary.ContainsKey(key)) FDictionary[key] = value; else FDictionary.Add(key, value); } public void WriteValue(string key, string value) { Ad
dKeyValue(key, value); } public void WriteValue(string key, bool value) { AddKeyValue(key,Convert.ToString(value)); } public void WriteValue(string key, int value) { AddKeyValue(key, Convert.ToString(value)); } public void WriteValue(string key, float value) { AddKeyValue(key, Convert.ToString(value)); } public void WriteValue(string key, DateTime value) { AddKeyValue(key, Convert.ToString(value)); } public string ReadValue(string key,string defaultv) { if (FDictionary.ContainsKey(key)) return FDictionary[key]; else return defaultv; } public bool ReadValue(string key, bool defaultv) { string rt = ReadValue(key, Convert.ToString(defaultv)); return Convert.ToBoolean(rt); } public int ReadValue(string key, int defaultv) { string rt = ReadValue(key, Convert.ToString(defaultv)); return Convert.ToInt32(rt); } public float ReadValue(string key, float defaultv) { string rt = ReadValue(key, Convert.ToString(defaultv)); return Convert.ToSingle(rt); } public DateTime ReadValue(string key, DateTime defaultv) { string rt = ReadValue(key, Convert.ToString(defaultv)); return Convert.ToDat