小弟看到这样的一段代码:
  
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
        settings.ValidationType = ValidationType.Schema;        
        settings.Schemas.Add(null, XmlReader.Create(xsdPath));
        reader = XmlReader.Create(xmlPath, settings);        ...
        void ValidationEventHandler(object sender, ValidationEventArgs args)
         {
           ...                
          }    
        
     小弟对settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
这句代码有些疑问。应该是将后面的事件ValidationEventHandler添加到settings的ValidationEventHandler事件中。      我想问为什么不是这样的写法
settings.ValidationEventHandler +=ValidationEventHandler;       此处为什么要用new?还有后面的参数this.ValidationEventHandler中为什么要this来引用,而不直接使用参数ValidationEventHandler?      恳请各位高手不吝赐教!

解决方案 »

  1.   

    因为你要产生一个对象,当然要new了。this表示当前的对象。可以不用this.直接使用ValidationEventHandler也是可以的。这个是只是编码的习惯而已。当然,使用this.在编码的时候可以提示你。
      

  2.   

    ValidationEventHandler
     指定事件处理程序,用于接收关于验证事件的信息
     XmlReaderSettings settings = new XmlReaderSettings();
        settings.ValidationEventHandler += new 
       ValidationEventHandler(this.ValidationEventHandler);
        settings.ValidationType = ValidationType.Schema;        注册事件,需要+= NEW实现注册