1 c#
我的问题如下:
我正在构建一个控制台应用程序,它询问用户应该创建的对象数量以及必须为每个对象分配的 4 个变量。新对象名称应包含从 1 开始的计数。
你会如何解决这个问题?我正在考虑一个类,但我不确定如何在运行时从用户输入创建对象。循环是最好的方法吗?
你会推荐什么样的类、结构、列表、数组……。对象中的变量总是相同的类型,但我需要正确命名它们,以便我可以有效地编写方法来在程序的后期阶段对它们执行操作。
我只是在学习语言,我将非常感谢您提供有关如何解决我的问题的建议。
如果我正确理解您的问题:
class MyClass
{
public int ObjectNumber { get; set; }
public string SomeVariable { get; set; }
public string AnotherVariable { get; set; }
}
// You should use keyboard input value for this
int objectsToCreate = 10;
// Create an array to hold all your objects
MyClass[] myObjects = new MyClass[objectsToCreate];
for (int i = 0; i < objectsToCreate; i++)
{
// Instantiate a new object, set it's number and
// some other properties
myObjects[i] = new MyClass()
{
ObjectNumber = i + 1,
SomeVariable = "SomeValue",
AnotherVariable = "AnotherValue"
};
}
Run Code Online (Sandbox Code Playgroud)
这并不完全符合您的描述。添加键盘输入和其他东西:) 大部分代码需要采用某种Main
方法才能实际运行,等等。
在这种情况下,我选择了一个class
来保存您的 4 个变量。不过我只实现了 3 个,并且我已经将它们实现为属性,而不是字段。我不确定这对您的作业是否必要,但通常来说,没有可公开访问的字段是一个好习惯,我不想成为教您坏习惯的人。请参阅自动实现的属性。
您提到了 a struct
,这也是一个选项,具体取决于您要存储的内容。不过,一般来说,上课会更安全。
循环确实是初始化对象的方法。在这种情况下,for
循环是最实用的。它从 开始计数0
,因为我们将对象放入数组中,而 C# 中的数组索引总是从 开始0
。这意味着您必须使用i + 1
分配给对象编号,否则对象将编号为 0 - 9,就像它们在数组中的索引一样。
我正在使用对象初始值设定项语法初始化对象,这是 C# 3.0 中的新功能。老式的方法是将它们一一分配:
myObjects[i] = new MyClass();
myObjects[i].ObjectNumber = i + 1;
myObjects[i].SomeVariable = "SomeValue";
Run Code Online (Sandbox Code Playgroud)
或者,你可以定义一个构造函数用于MyClass
这需要3个参数。
最后一件事:这里的一些人发布了使用通用 List ( List<MyClass>
) 而不是数组的答案。这将工作正常,但在我的示例中,我选择使用您可以使用的最基本的形式。与数组不同,列表没有固定大小(注意我是如何初始化数组的)。如果您想稍后添加更多项目,或者如果您事先不知道需要存储多少项目,则列表非常有用。然而,在这种情况下,我们有键盘输入,所以我们确切地知道我们将拥有多少项目。因此:数组。它会隐含地告诉正在阅读您的代码的人,您不打算稍后添加更多项目。
我希望这回答了一些问题,并提出了一些新的问题。看看兔子洞有多深:P