博文

c#操作xml实例(2008-03-29 10:56:00)

摘要:在C#.net中如何操作XML
    需要添加的命名空间:
    using System.Xml;     定义几个公共对象:
    XmlDocument xmldoc ;
    XmlNode xmlnode ;
    XmlElement xmlelem ;     1,创建到服务器同名目录下的xml文件:
    方法一:
    xmldoc = new XmlDocument ( ) ;
    //加入XML的声明段落
    xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
    xmldoc.AppendChild ( xmlnode ) ;
    //加入一个根元素
    xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;
    xmldoc.AppendChild ( xmlelem ) ;
    //加入另外一个元素
    for(int i=1;i<3;i )
    {     XmlNode root=xmldoc.SelectSingleNode("Employees");//查找<Employees>
    XmlElement xe1=xmldoc.CreateElement("Node");//创建一个<Node>节点<......

阅读全文(2312) | 评论:0

c#基础25问(2008-03-21 17:33:00)

摘要:1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思?  4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 overload 的区别?  8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义?  11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? 13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?  15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题?  18.抽象类和接口的区别?  19.别名指示符是什么? 20.如何释放非托管资源?  21.P/Invoke是什么?  22.StringBuilder 和 String 的区别?  23.explicit 和 implicit 的含义? 24.params 有什么用?  25.什么是反射? 以下是我做的一份参考答案(C# 语言范畴之内),如果有不准确、不全面的,欢迎各位朋友指正! 1.静态变量和非静态变量的区别?  答: 静态变量: 静态变量使用 static 修饰符进行声明 在所属类被装载时创建 通过类进行访问 所属类的所有实例的同一静态变量都是同一个值 非静态变量: 不带有 static 修饰符声明的变量称做非静态变量 在类被实例化时创建 通过对象进行访问 同一个类的不同实例的同一非静态变量可以是不同的值 示例: using System;using System.Collections.Generic;using System.Text;  namespace Example01 {        ......

阅读全文(1836) | 评论:0

c#四个技巧(2008-03-19 08:53:00)

摘要:1.如果可能尽量使用接口来编程    .NET框架包括类和接口,在编写程序的时候,你可能知道正在用.NET的哪个类。然而,在这种情况下如果你用.NET支持的接口而不是它的类来编程时,代码会变得更加稳定、可用性会更高。请分析下面的代码:  这个函数从一个可为任何对象的数组中加载ListBox,这段代码被限定为只能使用数组。假想过些时候你发现那些对象存在数据库中,或别的集合中。那么你需要修改程序来使用不同的集合类型。如果你用ICollection接口来写那段程序,你就不用修改那段程序了,对于任何实现ICollection 接口的类型它都能很好的工作:   ICollection被数组和所有System.Collection中的集合实现。此外,多维数组也支持ICollection接口。如果那还不够的话,数据库.NET类同样支持ICollection接口。用接口写的这个函数不用需改就可以才许多中情况下使用。    2. 使用属性代替原始数据    因为属性已经成为语言本身的元素,所以声明数据元素时它的作用域等级没有必要大于private。因为代码本身会把属性看成数据元素,你并没有失去使用简单数据类型的便利性 。相反它会使你的代码更加灵活功能更加强大。属性使你的数据元素封装性更好。属性可以让你使用lazy evaluation来返回数据。lazy evaluation的意思是当用户请求时才计算它的值,而不是一直保留着它。  最后,属性可以是virtual也可以是abstract。你也可以在接口中定义属性。  这里还有维护方面的因素应当注意:尽管操作两者的方法是一样的,但是你把一个数据元素变成属性,那么原先客户端的程序便不能访问服务端的新版本程序了。实际上对于在Web service中你想实现序列化的值你可以把它们变成属性来使用: private int TheMonth = 0; [XmlAttribute ("Month")] public int Month {  get {   return TheMonth;  }  set {   TheMonth = value;  } }   简单通过属性就可以使你的所有数据元素私有化。     3. 在Producer/Consumer 的Idiom中使用Delegate     当你生成一个实......

阅读全文(1804) | 评论:0

手机短信发送windows服务(2008-03-19 08:48:00)

摘要:最近在电脑城上买了一根NOKIA3210的数据线,玩了几天改LOGO、改铃声后也将数据线扔在一边。直到前几天在Http: //oxygensoftware.com上看到有发手机短信息的二次开发控件,才想起多日不用的数据线,而且最近在学C#,觉得用C#做个发短信息的程序也不错,经过多天的测试,终于实现用电脑+数据线+手机的模式,实现在单位的局域网平台上发送短信息了。 由于单位使用到发手机短信息的地方有很多,可能是从网页、可能是OUTLOOK中的窗体、也可能是某台非Windows操作系统的主机的某个系统,所以经过思考探讨,觉得最好的解决方案是采用Windows的“服务”,定时从一个目录中固定格式的文本文件中读取出相应的信息,发送出去。而其它客户端只需往该目录写入文本信息即可。思路定下来后就让我们开始吧! 先交待一下开发平台:Windows 2000 Advance Server操作系统、Visual Studio .Net 、Oxygen Sms ActiveX Control V2.3 (Share Ware)、 Nokia 3210手机通过数据线接在COM1上。运行Visual Studio .Net,新建一个C#的项目,选择“Windows Server”类型的项目,命名为“SmsServer”。在Server1的设计画面,将“ServerName”命名为“SmsServer”。点击 “视图设计器按钮”切换到设计画面,在“Windows Forms”工具箱中拖一时钟控件,命名为“SmsTimer”,在“Components”工具箱中拖一“EventLog”控件。命名为 “eventLog1”。在“项目”菜单中点击“添加引用”,选择“COM”页,浏览到安装Oxygen Sms ActiveX Control V2.3程序的目录,找到SMSControl.ocx添加到“选定的组件”中。 将Server1.cs代码替换为 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProces......

阅读全文(203) | 评论:0

关机小程序(2008-03-19 07:56:00)

摘要: 非常幸运很容易就找到了Microsoft.Win32命名空间下面的SystemEvents类,他有一个静态的事件 SessionEnding在系统注销或者关机时发生,此事件只有在winform的程序下有效,而在控制台程序下面无效,不能激发事件;还有一点我们必须在程序推出时将加上的事件移除掉,否则就容易造成内存溢出。 关键代码如下: using System;   using System.Collections.Generic;   using System.Windows.Forms;   using Microsoft.Win32;   namespace Shutdown   {   static class Program   {   /**////   /// 应用程序的主入口点。   ///   [STAThread]   static void Main()   {   Application.EnableVisualStyles();   Application.SetCompatibleTextRenderingDefault(false);   FormShutdown formShutdown = new FormShutdown();   SystemEvents.SessionEnding += new SessionEndingEventHandler(formShutdown.SystemEvents_SessionEnding);   Application.Run(formShutdown);   }   }   }Form 的代码:   using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Text;   using System.Windows.Forms;   using Microsoft.Win32;   namespace Shutdown   {   public partial class FormSh......

阅读全文(208) | 评论:0