首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中,如何在方法中创建对象并将其添加到其他对象的列表中?

在C#中,如何在方法中创建对象并将其添加到其他对象的列表中?
EN

Stack Overflow用户
提问于 2022-02-06 20:41:40
回答 1查看 1.1K关注 0票数 -4

我有一个程序,其中我想从主作用域调用一个"Add“方法,它向Class方法发送一个新的空对象。

在方法中,我分配传递给对象的值,将值赋值给'new‘对象,并将初始化的对象添加到列表中。创建的列表在方法之外,但仍然在方法所在的同一个类中。

有办法这样做吗?我有个代码片段可以帮你理解我在说什么。

谢谢!

代码语言:javascript
复制
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(新对象());

EN

回答 1

Stack Overflow用户

发布于 2022-02-11 14:45:46

面向对象的原则之一是数据封装。这意味着一个对象拥有它的数据,并且只有该对象应该修改它。

这意味着,理想情况下,您需要在包含列表的同一个对象中修改列表的函数:

代码语言:javascript
复制
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();
        }
    }
}

但是,如果您不能这样做,则通过引用传递列表,因此可以在函数中对其进行操作。

这里有一个完整的程序来展示这一点:

代码语言:javascript
复制
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);
        }
        
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71011471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档