好的,所以我有一個Queue用於我的打印方法。它爲我需要打印的每一行存儲文本和選定的字體。下面的循環應該打印出Queue的內容,但它看起來像peek返回的是對象的值,而不是對象的實際引用。有什麼辦法讓它返回一個引用?Peek方法返回參考對象
while (reportData.Count > 0 && checkLine(yPosition, e.MarginBounds.Bottom, reportData.Peek().selectedFont.Height))
{
ReportLine currentLine = reportData.Peek();
maxCharacters = e.MarginBounds.Width/(int)currentLine.selectedFont.Size;
if (currentLine.text.Length > maxCharacters)
{
e.Graphics.DrawString(currentLine.text.Substring(0, maxCharacters), currentLine.selectedFont, Brushes.Black, xPosition, yPosition);
yPosition += currentLine.selectedFont.Height;
currentLine.text.Remove(0, maxCharacters);
}
else
{
e.Graphics.DrawString(currentLine.text, currentLine.selectedFont, Brushes.Black, xPosition, yPosition);
yPosition += currentLine.selectedFont.Height;
reportData.Dequeue();
}
}
ReportLine是一個結構,所以它總是按值傳遞,除非另有說明。我不想把它改成一個班,因爲它的唯一目的是保存兩條信息。
[編輯]
這是ReportLine的樣子。這是非常簡單的:
public struct ReportLine
{
public string text;
public Font selectedFont;
}
* *正是你的 「對象的值」 意味着什麼 - 什麼ReportLine看起來不一樣?你在觀察什麼? –
生成ReportLine引用類型? – mikalai