首页 > 解决方案 > c#中的另一个变量中的一个变量

问题描述

我需要做这样的事情......

class Warrior{
   public String weapon;
   public String armor;
}

String[] SublimeArray = new String[5];
for(int x = 0; x <= SublimeArray.Length; x++){

         Warrior aquiles(x)  = new Warrior();
         SublimeArray[x]  = aquiles(x);

}

//It give me something like that....
//   Warrior aquiles1 = new Warrior();
//   SublimeArray[1] = aquiles1;
//   Warrior aquiles2 = new Warrior();
//   SublimeArray[2] = aquiles2;
//   Warrior aquiles3 = new Warrior();
//   SublimeArray[3] = aquiles1;
//            .
//            .
//            .

我怎么能在c#中把这个...一个变量变成另一个变量的另一个声明...(这个代码示例是散列函数的一部分,一个开放散列示例,我想把一个动态结构放在一个数组中... )

提前感谢您的回复!

标签: c#arraysinstantiation

解决方案


看起来您正在混淆变量的命名并给对象一个所谓的“名称”。

在创建Warrior对象时,您不需要为每个对象 ( Warrior) 存储一个新的变量名,因为您将从数组中访问它们。我的意思是,不要尝试Warrior像这样命名每个新的:aquiles1、aquiles2 等。您只需直接在数组中创建它们并从那里访问它们。

因此,为了创建一个Warriors 数组,您可以这样做:

Warrior[] SublimeArray = new Warrior[5];
for(int x = 0; x <= SublimeArray.Length; x++){
     SublimeArray[x]  = new Warrior();
}

请注意,我将数组的类型更改为Warrior而不是String. 具有类型的数组String不能保存除String变量之外的任何内容。

现在,为了访问您创建的这些新战士,您只需索引数组。因此,要访问第一个Warrior,您可以这样做:

SublimeArray[0].Weapon = "Dragon Halberd";

或者,要访问最后一个:

SublimeArray[4].Armor = "Rune Plate Armor";

如您所见,您不需要为每个Warrior变量指定一个新的变量名,您只需通过数组访问它们。

我应该注意我将属性名称(武器和盔甲)大写,因为公共属性的标准命名约定是 PascalCase。


推荐阅读