2011-02-16 148 views
1

如何將對象從一種方法傳遞給另一種方法? 從下面的代碼,我想從xmlReader()通過newEventoutputData()ASP.NET C#將對象傳遞給方法

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; 
} 

謝謝 喬丹

+0

的建議的工作。感謝大家的快速和有益的迴應! – jtlowe 2011-02-16 17:28:58

回答

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

變化

public void outputData(object theEvent) 

public void outputData(Event theEvent) 
1

我認爲你的意思是「我怎麼把theEvent從對象回到Event「,在這種情況下:

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

更好的選擇將改變outputData方法簽名,因此,它需要一個事件參數,而不是一個對象參數:

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

如果由於某種原因,你需要通過theEventobject,但是你可能需要內outputData多次使用它,有一個在第一種方法的變化:

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 
} 
0

您正確地傳遞對象,但傳球達鑄造....

如果OutputData將只會接受類型事件的對象,則對象的界定及將b

public void outputData (Event theEvent) { 
    ...... 
}