我在理解下面的代碼片段(取自書中:MCSD認證工具包(考試70-483)用C#編程)中的一行時遇到問題... 這裏的問題集給出如下:在理解重載類構造函數的語法時遇到困難
使一個橢圓類表示一個橢圓。它應該將橢圓的大小和位置存儲在RectangleF類型的Location屬性中(在System.Drawing名稱空間中定義)。給它兩個構造函數:一個將RectangleF作爲參數,另一個將X位置,Y位置,寬度, 和高度作爲參數。使第二個構造函數調用第一,使構造函數拋出一個異常,如果寬度或高度小於或等於我理解下面一行有問題0
class Ellipse
{
public RectangleF Location { get; set; }
// Constructor that takes a RectangleF as a parameter.
public Ellipse(RectangleF rect)
{
// Validate width and height.
if (rect.Width <= 0)
throw new ArgumentOutOfRangeException("width", "Ellipse width must be greater than 0.");
if (rect.Height <= 0)
throw new ArgumentOutOfRangeException("height", "Ellipse height must be greater than 0.");
// Save the location.
Location = rect;
}
// Constructor that takes x, y, width, and height as parameters.
public Ellipse(float x, float y, float width, float height)
: this(new RectangleF(x, y, width, height))
{
}
}
... 誰能解釋接下來的行是什麼?請在你的解釋中稍微詳細一點!
:this(new RectangleF(x, y, width, height))
在此先感謝!
':這個(新的RectangleF(X,Y,寬度,高度))'調用'公共橢圓(的RectangleF RECT)'構造。基本上你的橢圓是由'x,y,寬度和高度'或'矩形'構造的。當你從'x,y,width和height'構造它時,你將它們作爲參數傳遞給構造一個'rectangle',它作爲參數傳遞給你的其他構造函數。最後,您只使用一個構造函數 - 接受「矩形」的構造函數,另一個只是「重定向」它(將矩形參數變換爲矩形) –
因此,您不必重複你的其他構造函數的邏輯。 –