RectTransform.rect.Set doesn't work!

I tried to set the position of the buttons automatically at startup. In the documentation, as well as on the Internet, I was prompted to use something like this:

public float MaxButtonWidth = 200.0f;
public float MaxButtonHeight = 32.0f;
public float PanelButtonsYPosition = -4.0f;
public Button[] ButtonsArray;

void Start()
{
	int index;
	for(index = 0; index<ButtonsArray.Length; index++)
	{
		ButtonsArray[index] = ButtonsArray[index].GetComponent<Button>();
		RectTransform MyRectTransform = ButtonsArray[index].GetComponent<RectTransform>();
		MyRectTransform.rect.Set(
			index*MaxButtonWidth+4.0f, PanelButtonsYPosition,
			MaxButtonWidth, MaxButtonHeight
			);
		MyRectTransform.pivot.Set(0, 0);
	}
}

(i also tried set the pivot position too)

But it doesn’t work. I even tried to use this code:

		MyRectTransform.rect = Rect(
			index*MaxButtonWidth+4.0f, PanelButtonsYPosition,
			MaxButtonWidth, MaxButtonHeight
			);

But this does not work either. What did I do wrong?

Thats post completely answered your question, also my fast answer its Rect only for calculation, RectTransform.sizeDelta for applying weight or height RectTransform won't Resize - Unity Answers