如何在类方法内部修改调用对象-C#

时间:2018-07-20 16:24:29

标签: c# class

这可能已经被回答或无法解决,但是我不确切知道将要调用哪种类型的操作。

我希望能够从该对象类内的方法更改实例化的对象。例如:

public class Example
{
     private string SomeProperty {get;set;}

     public Example(string propValue)
     {
         SomeProperty = propValue;
     }

     public void Assign(string newPropertyValue)
     {
         this = new Example(newPropertyValue);
     }
}

然后实施:

public Main()
{
     Example test = new Example("value");

     Example.Assign("newValue");
}

或者,如果有更好的方法来实现这种结果,那就太好了。

谢谢!

2 个答案:

答案 0 :(得分:3)

分配$array2 = array( 'name' => array('Adam','Suzy'), 'gender' => array('male','female'), 'age' => array(30,25) ); for($i=0;$i<count($array2['name']);$i++){ echo $array2['name'][$i].$array2['gender'][$i].$array2['age'][$i].'<br/>'; } 仅适用于值类型(结构):

this

测试:

public struct Example
{
     public string SomeProperty {get;set;}

     public Example(string propValue) : this()
     {
         SomeProperty = propValue;
     }

     public void Assign(string newPropertyValue)
     {
         this = new Example(newPropertyValue);
     }
}

但是,这确实是不干净和不常规的。最好使用public static void Main() { Example test = new Example("value"); test.Assign("newValue"); Console.WriteLine(test.SomeProperty); // prints "newValue" } 参数创建一个静态方法(我不得不提到,考虑到简单地设置属性也是可行的,这是一个很愚蠢的例子):

ref

测试:

public static void Replace(ref Example example, string newPropertyValue)
{
    example = new Example(newPropertyValue);
}

答案 1 :(得分:0)

由于 this 是只读的,因此我追求的行为是不可能的。我决定改为使assign函数为非静态函数,并包括可选参数以更改调用对象的属性。

类似

public void Assing(string newProperty = "")
{
    if(newProperty != "")
    {
       SomeProperty = newProperty;
    }
}

感谢大家的投入!