我们正在将代码从C ++转移到C#,由于对C#的了解有限,我们陷入了陌生的境地。我们的问题是:
在c ++中,我们有2-3种类型的类/结构,它们具有指向属性的指针(std :: string),指针的目的是确保类似对象的所有实例都指向相同的属性。 e.g
struct st1{
string strVal;
};
struct st2{
string* strVal;
};
//At time of creation
st1* objst1 = new st1();
st2* objst2 = new st2();
objst2.strVal = &objst1.strVal;
//After this at all point both object will point to same value.
我想要这种架构C#,我得到了一些建议:
如果可以在这里完成更接近C ++的事情,请告诉我。
答案 0 :(得分:3)
在C#中,所有clases都是引用/指针。因此,只要您的属性属于类类型,就可以在不同的结构中使用相同的实例。
但是当你使用字符串时会出现问题。虽然它是类和引用属性,但它被强制为可变。因此,当您更改它时,您不会更改实例本身,但您可以使用这些更改创建新副本。
我想到的一个解决方案是创建自定义字符串类,它只包含字符串并将其用作您的类型:
public class ReferenceString
{
public String Value { get; set; }
}
答案 1 :(得分:0)
您可以使用带继承的静态属性:
class thing
{
static string stringThing;
public string StringThing
{
get { return stringThing; }
set { stringThing = value; }
}
}
class thing2 : thing
{
}
然后:
thing theThing = new thing();
theThing.StringThing = "hello";
thing2 theThing2 = new thing2();
// theThing2.StringThing is "hello"