ASP.NET C#将对象传递给方法

时间:2011-02-16 17:01:46

标签: c# asp.net

如何将对象从一种方法传递到另一种方法? 从下面的代码中,我想将newEventxmlReader()传递到outputData()

public class Event
{
    public int ID {get; set;}
}


public void xmlReader()
{
    Event newEvent = new Event;

    newEvent.ID = 56;

    outputData(newEvent);
}


public void outputData(object theEvent)
{
    MainContainerDiv.InnerHtml = theEvent.ID;
}

谢谢你, 约旦

4 个答案:

答案 0 :(得分:7)

你已经传递了它,但你遇到的唯一问题是:

public void outputData(object theEvent)
{
    MainContainerDiv.InnerHtml = ((Event)theEvent).ID;
}

public void outputData(Event theEvent)
{
    MainContainerDiv.InnerHtml = theEvent.ID;
}

您必须将object转换为特定类型(第一个解决方案)或将特定类型设置为您的参数(第二个解决方案)。如果许多不同的呼叫者调用相同的方法,那当然是一个更大的问题。在这种情况下,更健壮的方法是检查参数类型:

public void outputData(object theEvent)
{
    if (theEvent is Event)
    {
        MainContainerDiv.InnerHtml = (theEvent as Evenet).ID;
    }
    // process others as necessary
}

答案 1 :(得分:1)

变化

public void outputData(object theEvent)

public void outputData(Event theEvent)

答案 2 :(得分:1)

我认为你的意思是“如何将事件从对象转回Event”,在这种情况下:

public void outputData(object theEvent)
{
    MainContainerDiv.InnerHtml = ((Event)theEvent).ID;
}

更好的选择是更改outputData的方法签名,以便它采用Event参数,而不是对象参数:

public void outputData(Event theEvent)
{
    MainContainerDiv.InnerHtml = theEvent.ID;
}

如果由于某种原因,您需要将theEvent作为object传递,但您可能需要在outputData内多次使用它,则第一种方法会有变化:< / p>

public void outputData(object theEvent)
{
    var event = (Event)theEvent;
    MainContainerDiv.InnerHtml = event.ID;
    //
    // You can now use "event" as a strongly typed Event object for any further
    // required lines of code
}

答案 3 :(得分:0)

你正确地传递了这个对象,但是通过向上传递....

如果OutputData只接受类型事件的Object,那么对象的定义将是b

public void outputData (Event theEvent) {
  ......
}
相关问题