C# 在类中保存值以供以后使用

C# 在类中保存值以供以后使用,c#,C#,我对c#相当陌生,所以我不确定在这里该做什么,我想把一个值从一个类保存到另一个类。这很难解释,但这就是我得到的。(我知道这里很乱) 职业英雄{ 私人单位装甲=0; 公共int装甲 { 获取{返回_装甲;} 设置 { 如果(值=20) { _装甲=20; } 其他的 { _装甲=价值; } } } } 所以我想要的是增加英雄护甲5,如walking()方法所示。然后,我想把这5件盔甲添加到我的英雄职业中,保存它的价值,然后用它做我想做的事情。我希望这是有意义的,因为这对我来说肯定不是每次创建类的

我对c#相当陌生,所以我不确定在这里该做什么,我想把一个值从一个类保存到另一个类。这很难解释,但这就是我得到的。(我知道这里很乱)

职业英雄{
私人单位装甲=0;
公共int装甲
{
获取{返回_装甲;}
设置
{
如果(值=20)
{
_装甲=20;
}
其他的
{
_装甲=价值;
}
}
}
}

所以我想要的是增加英雄护甲5,如walking()方法所示。然后,我想把这5件盔甲添加到我的英雄职业中,保存它的价值,然后用它做我想做的事情。我希望这是有意义的,因为这对我来说肯定不是每次创建类的新实例时,都会有一个新实例。对任何其他实例所做的更改都不会出现在新实例中

考虑一个类比。。。一辆汽车驶离工厂的生产线。当它从工厂出来时,你把一个袋子放在后备箱里。片刻之后,另一辆同样的车从工厂里出来。它在各个方面都与第一个完全相同。如果你打开第二辆车的行李箱,你会在那里找到你的包吗

您有几个选择:

  • 在整个预期逻辑中维护对象的相同实例。对于任何正在进行的逻辑过程,这通常是有意义的。对象存在,应该在需要的地方传递。您不会期望必须不断创建所有内容的新实例
  • 将对象的状态(数据)保留在某个位置,以便以后可以重新加载状态。在不希望在内存中维护状态的系统中,如web应用程序中,这通常是有意义的。或者任何您希望应用程序终止并希望在下次运行时恢复中断位置的系统
  • (从技术上讲,我认为使用
    静态
    值是第三个选项。但该选项在这里似乎没有多大意义。对于所有“英雄”对象,您不会有一个单独的“护甲”值。每个对象都有自己的值。)

    你想走哪个方向取决于你自己。第一种方法的最简单示例可能是将对象传递给方法。比如:

    var myHero = new Hero();
    myHero.Armor += 5;
    SomeMethod(myHero);
    
    // elsewhere...
    void SomeMethod(Hero aHero)
    {
        // here, "aHero" has an armor increased by 5
    }
    

    当然,上面的第二个选项会稍微复杂一些,因为您需要编写保存和恢复状态的代码。这将是一个开始使用数据库的好机会。实体框架(Entity Framework)等框架在代码中轻松实现了这一点,一旦您了解了数据库是什么以及如何设置数据库的学习过程。

    每次创建类的新实例时,您都有一个新实例。对任何其他实例所做的更改都不会出现在新实例中

    考虑一个类比。。。一辆汽车驶离工厂的生产线。当它从工厂出来时,你把一个袋子放在后备箱里。片刻之后,另一辆同样的车从工厂里出来。它在各个方面都与第一个完全相同。如果你打开第二辆车的行李箱,你会在那里找到你的包吗

    您有几个选择:

  • 在整个预期逻辑中维护对象的相同实例。对于任何正在进行的逻辑过程,这通常是有意义的。对象存在,应该在需要的地方传递。您不会期望必须不断创建所有内容的新实例
  • 将对象的状态(数据)保留在某个位置,以便以后可以重新加载状态。在不希望在内存中维护状态的系统中,如web应用程序中,这通常是有意义的。或者任何您希望应用程序终止并希望在下次运行时恢复中断位置的系统
  • (从技术上讲,我认为使用
    静态
    值是第三个选项。但该选项在这里似乎没有多大意义。对于所有“英雄”对象,您不会有一个单独的“护甲”值。每个对象都有自己的值。)

    你想走哪个方向取决于你自己。第一种方法的最简单示例可能是将对象传递给方法。比如:

    var myHero = new Hero();
    myHero.Armor += 5;
    SomeMethod(myHero);
    
    // elsewhere...
    void SomeMethod(Hero aHero)
    {
        // here, "aHero" has an armor increased by 5
    }
    

    当然,上面的第二个选项会稍微复杂一些,因为您需要编写保存和恢复状态的代码。这将是一个开始使用数据库的好机会。实体框架(Entity Framework)等框架在代码中轻松实现了这一点,一旦您了解了数据库是什么以及如何设置数据库的学习过程。

    您必须在Walk方法之外创建一个Hero实例。大概是这样的:

    public static void Main()
    {
        var hero = new Hero();
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    }
    
    public class Hero
    {
        public int Armor { get; set; }
    
        public void Walk()
        {
            this.Armor += 5;
        }
    }
    
    string armor= System.IO.File.ReadAllText(@"C:\file.txt");
    
    此处运行的代码:


    祝你好运

    你必须在Walk方法之外创建一个英雄实例。大概是这样的:

    public static void Main()
    {
        var hero = new Hero();
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    }
    
    public class Hero
    {
        public int Armor { get; set; }
    
        public void Walk()
        {
            this.Armor += 5;
        }
    }
    
    string armor= System.IO.File.ReadAllText(@"C:\file.txt");
    
    此处运行的代码:


    祝你好运,所以你应该知道我们有三种存储方式

    如果后者可以是关闭应用程序后的任何时间,或者。。。你应该使用数据库(或者开始学习我提供给你的) 像这样:

    string file_name = "c:\\file.txt";
    
    System.IO.StreamWriter objWriter;
    objWriter = new System.IO.StreamWriter(file_name, true);
    
    objWriter.Write(armor);
    
    在这里,您可以将您的护甲写入一个文件,并且您可以在每次需要时这样做:

    public static void Main()
    {
        var hero = new Hero();
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    }
    
    public class Hero
    {
        public int Armor { get; set; }
    
        public void Walk()
        {
            this.Armor += 5;
        }
    }
    
    string armor= System.IO.File.ReadAllText(@"C:\file.txt");
    
    所以你可以用这两个步骤来指导你的课堂;或设置;护甲值


    另外两种存储数据的方法是中长缓存或将数据存储在类的对象中(如David所回答),直到您没有关闭应用程序为止。

    所以您应该知道我们有3种存储方式

    如果后者可以是关闭应用程序后的任何时间,或者。。。你应该使用数据库(或者开始学习我提供给你的) 像这样:

    string file_name = "c:\\file.txt";
    
    System.IO.StreamWriter objWriter;
    objWriter = new System.IO.StreamWriter(file_name, true);
    
    objWriter.Write(armor);
    
    在这里,您可以将您的护甲写入一个文件,并且您可以在每次需要时这样做:

    public static void Main()
    {
        var hero = new Hero();
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    
        hero.Walk();
        Console.WriteLine(String.Format("Current Armo: {0}", hero.Armor));
    }
    
    public class Hero
    {
        public int Armor { get; set; }
    
        public void Walk()
        {
            this.Armor += 5;
        }
    }
    
    string armor= System.IO.File.ReadAllText(@"C:\file.txt");
    
    所以你可以用这两个步骤来指导你的课堂;或设置;护甲值

    另外两种存储数据的方法是缓存中长时间,或者将数据存储在类的对象中(如David Answer所述),直到您没有关闭应用程序为止