setting bones on skinnedmeshrenderer doesnt work?

private void Awake() {
       
       SkinnedMeshRenderer mesh = GetComponent<SkinnedMeshRenderer>();

       GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
        obj.name="new";


        Debug.Log(mesh.bones[0].GetInstanceID());
        Debug.Log(obj.transform.GetInstanceID());

       
      
        mesh.bones[0]=obj.transform;

       Debug.Log(mesh.bones[0].GetInstanceID());

       
       
    }

the output:

-64722
-77598
-64722

even after the

mesh.bones[0]=obj.transform;

mesh.bones[0] is the same as it was before, so the assignment just isnt working?

so it works if i assign a whole array, instead of just one element:

private void Awake() {
       
       SkinnedMeshRenderer mesh = GetComponent<SkinnedMeshRenderer>();

       GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
        obj.name="new";


        Debug.Log(mesh.bones[0].GetInstanceID());
        Debug.Log(obj.transform.GetInstanceID());

        Transform[] newArray = new Transform[mesh.bones.Length];


       Array.Copy(mesh.bones, newArray, mesh.bones.Length);
       
      
        newArray[0]=obj.transform;
        mesh.bones=newArray;

       Debug.Log(mesh.bones[0].GetInstanceID());

       
       
    }