0

Rectangle 型のメソッドがあり、次を返す必要があります。

真実:

  • メソッドに渡される四角形の名前

そうしないと:

  • その長方形の幅と高さ

これは方法です:public Rectangle ReturnStuff(Rectangle rect) {...stuff...};

私はたくさんのものを試しました - たとえば (Rectangle) rect.ToString(); ConvertToString/Int()... しかし、何も機能していないようです。

任意のヒント?

ありがとう

4

3 に答える 3

2
public Rectangle (Rectangle rect) {};

その「メソッド」はコンストラクターです。

オブジェクトToString()をオーバーライドして、必要な方法で実装します。別のクラスから呼び出します。

public override string ToString()
{
    return "Rectangle";
}

幅の高さなどを返したい場合があります。

編集:

質問をコピー コンストラクターから戻り値の型 Rectangle のメソッドに変更したので、おそらく明確にする必要があります。

四角形を渡したい場合は、次のようにします: (メソッドの最後にセミコロンがあった理由がわかりません...)

public void ManipulateRectangle(Rectangle rect) 
{
    rect.GetWidth(); //I don't know your rectangle class methods or data members.
    rect.GetHeight(); //etc.
}

それがあなたの探しているものではなく、代わりに長方形を取得したい場合(長方形を渡すことによって?理由はわかりません-何らかの方法で操作しない限り)、実際に Rectangle 型のオブジェクトを返す必要があります。

public Rectangle ManipulateRectangle(Rectangle rect) 
{
    var newRectangle = new Rectangle();
    newRectangle.SetWidth(rect.GetHeight()); //ex manipulation

    return newRectangle;
}

参考までに、質問をもう少し具体的にしてみてください:)それは役に立ちます。また、メソッドの名前、それらに属するコード、および正確に何をしたいのかを含める必要があります。

于 2012-10-05T00:30:29.203 に答える
1

1 つのメソッドから 3 つの値 (名前、高さ、幅) を返すことはできません。

呼び出し元のコードは、返された のプロパティRectangleが利用可能な場合はそれを使用するか、メソッドがTuple<string,int,int>詳細を含む を返すことができます。メソッドは、outパラメーターを使用して、呼び出し元のコードに値を返すこともできます。

デザインと読みやすさの点で断然最良のオプションは、最初のオプションです。返された 'Rectangle' のプロパティを使用します。

したがって、呼び出しコードは次のようになります。

Rectangle rect1 = ???
Rectangle newRect = ReturnStuff(rect);
string name = newRect.ToString();
int width = newRect.Width;
int height = newRect.Height;
于 2012-10-05T00:57:30.957 に答える
1

その方法では何かがおかしいようです。

public Rectangle (Rectangle rect) {};

Rectangle私には、別のものから作成することになっているコンストラクターのように見えますRectangle

長方形の名前を返したい場合は、次のようなものが必要です。

public string RectangleName (Rectangle rect)
{
    return rect.ToString();
}

コンストラクターが渡された四角形のコピーを作成することを意図している場合は、次のようなものが必要です。

public Rectangle (Rectangle rect)
{
    this.name = rect.name;
    this.width = rect.width;
    this.height = rect.height;
}
于 2012-10-05T00:31:09.633 に答える