私はレベルがそのコンストラクタを介してオブジェクトを作成し、非常に基本的なシステムをセットアップしようとしている:同じオブジェクトの異なるインスタンスに異なる値の変数を割り当てる方法はありますか?
class Levels
{
// private level properties
private static string levelName { get; set; }
private static int levelSize { get; set; }
private static int levelNum { get; set; }
// new level constructor. Takes name, size (to square) and level number.
public Levels(string inName, int inSize, int inNum)
{
levelName = inName;
levelSize = inSize;
levelNum = inNum;
}
// ... GetLevel methods here...
}
とオブジェクトの各特定のインスタンスにそれらの値を割り当てます。しかし、levelName、levelSize、およびlevelNum変数が各インスタンスに適切に「固執」していないことが出力からわかります。
class Program
{
static void Main(string[] args)
{
var Level1 = new Levels("Forest", 15, 1);
var Level2 = new Levels("Desert", 22, 2);
Console.WriteLine($"--- {Level1.GetLevelName()}, level {Level1.GetLevelNum()} ---");
Console.WriteLine($"--- {Level2.GetLevelName()}, level {Level2.GetLevelNum()} ---");
Console.ReadLine();
}
}
// output:
// --- Desert, level 2 ---
// --- Desert, level 2 ---
// why is level 1 not displaying here?
は、私が最初にWriteLineメソッドコマンドの後にレベル2のコンストラクタを移動した場合、それは、hamfistedly、仕事は、しかし、明らかに、私は自分のインスタンスに固執し、それらの値を必要とすることを承知しています。
オブジェクトのインスタンスを持つことはできません。オブジェクトはクラスのインスタンス*です。 – idmean
おっと!うん、そうだね、それを指摘してくれてありがとう。 –