class a
{
 a()
 {
   do somthing;
 }
 b()
 {
   do something ;  
 }}class b
{
   a x=new a ;   
   x.b()();//问题1:这里有些数据要传给CLASS A的创建者,请问怎么实现?}

解决方案 »

  1.   

    b() 
    设为Public,b的回返值就会改变的.
      

  2.   

    class   a 

      public Data someData;  b() 
      { 
          do   something   ;     
      } } 
    class   b 

          a   x=new   a   ;     
    a.someData=....;  
          x.b()();//问题1:这里有些数据要传给CLASS   A的创建者,请问怎么实现? 
    }
      

  3.   

    class   a 

      public Data someData;  b() 
      { 
          do   something   ;     
      } } 
    class   b 

          a   x=new   a   ;     
    a.someData=....;  
          x.b()();//问题1:这里有些数据要传给CLASS   A的创建者,请问怎么实现? 
    }
      

  4.   

    应该是x.someData=....;     
      

  5.   

    请问HDT,改如何用委托实现?谢谢
      

  6.   

    我想实现个串口通讯的类。
    public class spcom
        {
            public spcom()
            {
                _sp = new System.IO.Ports.SerialPort();
                if (spInitialize(_sp))
                {
                    try
                    { 
                        _sp.ReceivedBytesThreshold=40;
                        _sp.Open();
                                        }
                    catch (Exception err)
                    {
                        MessageBox.Show(err.Message);
                    }
                }
                    
                _sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this._sp_DataReceived);
            }
            System.IO.Ports.SerialPort _sp;
            public System.IO.Ports.SerialPort sp
            {
                get
                {
                    return _sp;
                }
            }
            public string str;
            /// <summary>
            /// 初始化串口通讯参数
            /// </summary>
            /// <param name="sp">串口实例</param>
            private bool spInitialize(System.IO.Ports.SerialPort sp)
            {
                
                bool flag = false;
                XmlDocument doc = new XmlDocument();
                try
                {
                    doc.Load(System.IO.Directory.GetCurrentDirectory() + "\\meter.xml");
                    sp.PortName = doc.DocumentElement.SelectSingleNode("PortName").InnerText;
                    sp.BaudRate = int.Parse(doc.DocumentElement.SelectSingleNode("BaudRate").InnerText);
                    switch (doc.DocumentElement.SelectSingleNode("Parity").InnerText.ToLower())
                    {
                        case "even":
                            sp.Parity = System.IO.Ports.Parity.Even;
                            break;
                        case "":
                            sp.Parity = System.IO.Ports.Parity.Mark;
                            break;
                        case "none":
                            sp.Parity = System.IO.Ports.Parity.None;
                            break;
                        case "odd":
                            sp.Parity = System.IO.Ports.Parity.Odd;
                            break;
                        case "space":
                            sp.Parity = System.IO.Ports.Parity.Space;
                            break;
                        default:
                            break;
                    }
                    sp.DataBits = int.Parse(doc.DocumentElement.SelectSingleNode("DataBits").InnerText);
                    switch (doc.DocumentElement.SelectSingleNode("StopBits").InnerText)
                    {
                        case "1":
                            sp.StopBits = System.IO.Ports.StopBits.One;
                            break;
                        case "1.5":
                            sp.StopBits = System.IO.Ports.StopBits.OnePointFive;
                            break;
                        case "2":
                            sp.StopBits = System.IO.Ports.StopBits.Two;
                            break;
                        case "none":
                            sp.StopBits = System.IO.Ports.StopBits.None;
                            break;
                        default:
                            break;                }
                    flag = true;
                }
                catch (Exception err)
                {
                    MessageBox.Show(err.Message);
                    flag = false;
                }            return flag;
            }        static string SampleDelegateMethod(string message)
            {
                return (message);
            }        public void _sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//当串口接受到定义的数据时就会产生该事件,
            {
                if (_sp.IsOpen)
                {
                    str = _sp.ReadExisting();//问题:我在这里从串口读数据,问题是我怎么吧这些数据传给spcom的使用者?
                    _sp.DiscardInBuffer();
                }
                // return str;
                //MessageBox.Show(str);         
            }
      

  7.   

    换句话说就是事件是在class a 触发的。触发事件,数据处理好了要传给class b