我希望找到一种在C#中跳过复制构造函数方法的好方法,并在下面的代码中寻找一种与赋值相同的方法:
class Person
{
string Name;
int Age;
public Person() { }
//public Person(Person p)//copy contructor
//{
// this.Name = p.Name;
// this.Age = p.Age;
//}
public Person(string name ,int age)
{
this.Name = name;
this.Age = age;
}
public void Set(string name,int age)
{
this.Name = name;
this.Age = age;
}
public void Get()
{
Console.WriteLine("{0} {1}",Name,Age);
}
};
Person person= new Person("Arif",40);
person.Get();
//Person person2 = new Person(person);//skip copy
Person person2 = new Person();
person2 = person;//use assignment
person2.Get();
person.Set("Mahmood",44);
person.Get();
person2.Get();
输出我在复制的情况下看到复制构造函数的实现需要在下面给出
Arif 40
Arif 40
Mahmood 44
Arif 40
但是我看到的分配输出是错误的,如下所示
Arif 40
Arif 40
Mahmood 44
Mahmood 44
如何获得正确的输出?
答案 0 :(得分:0)
如果我们完全按照您提供的示例,您需要Person作为'结构'。它们是通过复制值而不是引用来分配的。
答案 1 :(得分:0)
您无法覆盖运算符" ="在C#中 See here in MSDN
=,。,?:,??, - >,=>,f(x),as,checked,unchecked,default,delegate,is,new,sizeof,typeof ======= >这些运营商不能超载
此外,拒绝正常行为的作业令人困惑
person1 = person2; //Your Person class
county1 = country2; // Some other class
两者都是类(Person& Country)的实例,因此被引用。为什么人的行为不是国家?!?
如果您正在使用类,则可以使用复制构造函数。 使用赋值运算符的一种方法是使用非引用类型,如基元或结构。但是,结构不应该有功能!那是什么课程。