使用C#中的函数创建新对象并将其存储

本文关键字:对象 存储 函数 新对象 创建 使用 | 更新日期: 2023-09-27 18:27:35

我有这个程序,它允许从中启动游戏,用户可以将自己的game/exe添加到程序中,并指定名称和游戏路径,以便启动。这是我迄今为止没有将游戏添加到程序设置中的代码:

using System.Windows.Forms;
namespace Games_Manager
{
    public class game
    {
        public string Name;
        public string Path;
        public game(string name, string path)
        {
            Name = name;
            Path = path;
        }
    }
    public partial class main_Win : Form
    {
        public main_Win()
        {
            InitializeComponent();
        }
        public void addGame(string gameName, string gamePath)
        {
            //Code to add a game to a list, how can I store the game lists 
            //so the user doesn't have to re-enter games every time 
            //the application runs and rather read the list every time.
        }
    }
}

我想做一个函数,当被调用时,根据输入的名称创建一个新的游戏对象,并存储游戏的名称和路径。我该如何做到这一点?

使用C#中的函数创建新对象并将其存储

问题。你的游戏存放在哪里?如果你想把它们存储在表单中,那么试试这个:

using System.Windows.Forms;
namespace Games_Manager
{
    public class Game
    {
        public string Name;
        public string Path;
        public Game(string name, string path)
        {
            Name = name;
            Path = path;
        }
    }
    public partial class MainWin : Form
    {
        List<Game> games;  //here is where the games will be stored
        public MainWin()
        {
            InitializeComponent();
            games = new List<Game>(); //here the list is initialized
        }
        public void AddGame(string gameName, string gamePath)
        {
            games.Add(new Game(gameName, gamePath)); //add a game to the list
        }
    }
}

PS。我对类和变量名使用标准的C#命名约定。类为大写,变量为小写。

编辑1

以下是一些非常基本的代码,以便在Xml文件中保持游戏列表。要求Game具有无参数构造函数,并且具有名称、路径等的读/写属性。

    private bool ReadGamesList(string path)
    {
        if (File.Exists(path))
        {                
            XmlSerializer xml=new XmlSerializer(typeof(Game[]));
            var fs=File.Open(path, FileMode.OpenOrCreate, FileAccess.Read);
            games=new List<Game>((Game[])xml.Deserialize(fs));
            fs.Close();
            return true;
        }
        return false;
    }
    private bool SaveGamesList(string path)
    {
        if (games.Count==0) return false;
        XmlSerializer xml=new XmlSerializer(typeof(Game[]));
        var fs=File.Open(path, FileMode.Create, FileAccess.Write);
        xml.Serialize(fs, games.ToArray());
        fs.Close();
        return true;
    }

可能是我误解了你。你用构造函数创建游戏,比如:

var g = new game("packman", "c:'folder'packman.exe");

如果你想有一个工厂方法,你可以让它成为静态的,并从那里调用一个构造函数,比如:

var g = game.Create("packman", "c:'folder'packman.exe");