vrajs5
vrajs5

Reputation: 4126

Use of pointer like structure in C#

We are transfering our code from C++ to C# and due to limited knowledge of C# we are stuck into strange situation. Our problem is:

In c++ we have 2-3 types of class/structures which have pointers to property (std::string), purpose of pointer is to make sure that all the instance for similar object will point to same property. 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.

I want this kind of architecture C#, I got some suggestion like:

  1. Declare events
  2. Make code unsafe and use pointers (but I think this will lead to some other problems)

Please let me know if something better and near to C++ can be done here..

Upvotes: 0

Views: 453

Answers (2)

Dave Arkell
Dave Arkell

Reputation: 3990

You could use a static property with inheritance:

class thing
{
  static string stringThing;
  public string StringThing
  {
    get { return stringThing; }
    set { stringThing = value; }
  }
}

class thing2 : thing
{
}

Then later:

thing theThing = new thing();
theThing.StringThing = "hello";

thing2 theThing2 = new thing2();
// theThing2.StringThing is "hello"

Upvotes: 0

Euphoric
Euphoric

Reputation: 12859

In C# all clases are references / pointers. So as long as your property is of class type, you can have same instance in different structures.

But problem can arise when you use string. While it is class and reference property, it is enforced to be imutable. So when you change it, you dont change the instance itself, but you create new copy with those changes.

One solution that comes to mind is to create custom string class, that will simply contain string and use it as your type:

public class ReferenceString
{
    public String Value { get; set; }
}

Upvotes: 3

Related Questions