这可能已经被回答或无法解决,但是我不确切知道将要调用哪种类型的操作。
我希望能够从该对象类内的方法更改实例化的对象。例如:
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");
}
或者,如果有更好的方法来实现这种结果,那就太好了。
谢谢!
答案 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;
}
}
感谢大家的投入!