我有一个程序,其中我想从主作用域调用一个"Add“方法,它向Class方法发送一个新的空对象。
在方法中,我分配传递给对象的值,将值赋值给'new‘对象,并将初始化的对象添加到列表中。创建的列表在方法之外,但仍然在方法所在的同一个类中。
有办法这样做吗?我有个代码片段可以帮你理解我在说什么。
谢谢!
public Kayttajat addToList(Kayttajat objects)
{
//Adds the name
Console.WriteLine("Käyttäjän nimi: ");
string input = Console.ReadLine();
//Adds a decimal amount of money
Console.WriteLine("Käyttäjän rahasumma: ");
decimal input2 = Convert.ToDecimal(Console.ReadLine());
//Adds a PIN code
Console.WriteLine("Käyttäjän pin: ");
int input3 = Convert.ToInt16(Console.ReadLine();
//Adds to the list outside of the scope
KayttajaLista.Add(objects(input, input2, input3));
}然后我从主范围调用这个方法。
Class.AddToList(新对象());
发布于 2022-02-11 14:45:46
面向对象的原则之一是数据封装。这意味着一个对象拥有它的数据,并且只有该对象应该修改它。
这意味着,理想情况下,您需要在包含列表的同一个对象中修改列表的函数:
using System;
using System.Collections.Generic;
record User {
public string Name { get; init; } = default!;
// Add more info fields here
}
class Users {
private readonly List<User> UserList = new List<User>();
public void AddNew() {
Console.WriteLine("Käyttäjän nimi: ");
string name = Console.ReadLine();
// Add more things
UserList.Add(new User() {
Name = name,
// More stuff ...
});
}
}
class Program {
public static void Main() {
var users = new Users();
// Add five users
for (var i = 0;i < 5; i++ ) {
users.AddNew();
}
}
}但是,如果您不能这样做,则通过引用传递列表,因此可以在函数中对其进行操作。
这里有一个完整的程序来展示这一点:
using System;
using System.Collections.Generic;
record User {
public string Name { get; init; } = default!;
// Add more info fields here
}
class SomeOtherClass {
public void AddNew(List<User> users) {
Console.WriteLine("Käyttäjän nimi: ");
string name = Console.ReadLine();
// Add more things
users.Add(new User() {
Name = name,
// More stuff ...
});
}
}
class Program {
public static void Main() {
var other = new SomeOtherClass();
List<User> userList = new List<User>();
// Add five users
for (var i = 0;i < 5; i++ ) {
other.AddNew(userList);
}
}
}https://stackoverflow.com/questions/71011471
复制相似问题