Random Range through array error

I’m getting this error from my script and I’m really not sure why
‘A field initializer cannot reference the nonstatic field, method, or property `Inventory.myItemNameArray’

its from the line - private int randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];

Thanks for any help

	public GameObject mySphere;
	
	public class myInventory
	{
		public string itemName; 
		public string itemType; 


		public myInventory(string Name, string type){
			itemName = Name; 
			itemType = type;
		}
	}

	public string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};
	private int randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];

	void OnTriggerEnter(Collider collider){
		if (collider.name == "mySphere") {
        	myInventory newitems = new myInventory (myItemNameArray[randomInt] , "Weapon");
			Debug.Log ("You found a new " + newitems.itemType + " - " + newitems.itemName + "!");
            Destroy (mySphere);
	   }
	}

You need to put that line in a method like “Awake” or “Start”.

Also that line should return a string not an integer.

private string randomInt;
    void Start(){
         randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
    }

Your error that you try will address to a variable when initialize all global variables. Candidate solutions it is possible to find much. I will bring two of them. The first:

 public static string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};

Ans second:

 public string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};
 private int randomInt;
 void Start() {
  randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
 }