【发布时间】:2014-04-15 22:37:55
【问题描述】:
我有一个用于创建 dll 的公共类。它有一个变量和一个属性。让我们假设它看起来像这样:
public class Main
{
private int _someInt = 0;
public int SomeInt
{
get { return this._someInt; }
set
{
this._someInt = value;
if (this._someInt == 1)
{
_someInt = 0;
}
}
}
public int ExecuteMain()
{
OtherClass.DoSomething(this.SomeInt);
}
}
我还有另一个类,在 OtherClass 类的一个单独项目中,它具有静态 DoSomething 方法:
public static void DoSomething(int someInt)
{
someInt = 1;
}
我的问题是Main 类中的SomeInt 属性被OtherClass 的DoSomething 方法设置为1,但这不会触发Main 类属性中的设置器。我做错了吗?
【问题讨论】:
-
你只是在设置一个参数的值,它与你传入的值除了它的值之外没有任何关联,你可以通过
ref或者找到访问变量的方法 -
我尝试使用“out”关键字,但在这种情况下我不能使用属性。我需要在 SomeInt 更改为 1 时捕获事件。还有其他方法可以做到吗?
-
考虑过...我将 int 包装在一个对象中。如果我没记错的话,对象是通过引用传递的,所以我应该改变值。值确实发生了变化,但我仍然无法触发 setter。
标签: c# properties