Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中调用方法语法时赋值#_C# - Fatal编程技术网

C# 在C中调用方法语法时赋值#

C# 在C中调用方法语法时赋值#,c#,C#,很抱歉,我不知道C#是否有这种语法,也不知道语法名称。下面是我的代码,我想添加两个名字相同但年龄不同的人。所以我想知道C#是否有一个简单的语法,我可以在调用AddPerson方法时更改Age属性值。请告诉我我能不能做到?如果可以,我该怎么办?多谢各位 class Program { static void Main(string[] args) { //I want to do this Person p =

很抱歉,我不知道C#是否有这种语法,也不知道语法名称。下面是我的代码,我想添加两个名字相同但年龄不同的人。所以我想知道C#是否有一个简单的语法,我可以在调用AddPerson方法时更改Age属性值。请告诉我我能不能做到?如果可以,我该怎么办?多谢各位

class Program
    {
        static void Main(string[] args)
        {
            //I want to do this
            Person p = new Person
            {
                Name = "Name1",
                //And other propeties
            };
            AddPerson(p{ Age = 20}); 
            AddPerson(p{ Age = 25}); //Just change Age; same Name and others properties

            //Not like this(I am doing)
            p.Age = 20;
            AddPerson(p);
            p.Age = 25;
            AddPerson(p);

            //Or not like this
            AddPerson(new Person() { Name = "Name1", Age = 20 });
            AddPerson(new Person() { Name = "Name1", Age = 25 });
        }
        static void AddPerson(Person p)
        {
            //Add person
        }
    }
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        //And more
    }

如果
Person
是记录类型,则是:通过使用。请注意,这需要C#9.0,还要注意记录类型是不可变的

public record Person( String Name, Int32 Age );

public static void Main()
{
    Person p = new Person( "Name1", 20 );
    
    List<Person> people = new List<Person>();

    people.Add( p with { Age = 25 } );
    people.Add( p with { Age = 30 } );
    people.Add( p with { Name = "Name2" } );
}
公共记录人(字符串名称,Int32年龄);
公共静态void Main()
{
人员p=新人员(“姓名1”,20);
列表人员=新列表();
加上(p和{Age=25});
加上(p和{Age=30});
添加(p和{Name=“Name2”});
}
这是我在运行LinqPad时看到的:


你的意思是
Person1.Age=Person2.Age
因为这会将Person2的年龄分配给Person1的年龄,因为Person是一个类,如果你希望在内存中有多个具有不同值的实例,你必须在某处创建这些单独的实例。这种方法非常简单,这就是我想要的。但我运气不好,因为它需要C#9.0,所以我不能用于我当前的程序,因为我的项目现在是C#的较低版本。我会记住这一点,并申请下一个项目。非常感谢你。