使用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.
}
}
}
我想做一个函数,当被调用时,根据输入的名称创建一个新的游戏对象,并存储游戏的名称和路径。我该如何做到这一点?
问题。你的游戏存放在哪里?如果你想把它们存储在表单中,那么试试这个:
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");