【发布时间】:2011-12-29 05:19:56
【问题描述】:
我正在尝试找出这段 ASP.NET C# 代码。有人可以建议我在这里没有做什么吗?
当我运行下面的代码时,我期望 strDest 为“新值”并且 nDest 等于 2,但它们保持不变...
//These are two variables to fill
string strDest = "";
int nDest = 0;
public enum MyDataType
{
MyTypeString,
MyTypeInt
}
public struct MyStruct
{
public MyDataType type;
public Object objDest;
public MyStruct(MyDataType tType, Object oDest)
{
type = tType;
objDest = oDest;
}
}
//Pass variables by reference
MyStruct[] data2Check = {
new MyStruct(MyTypeString, strDest),
new MyStruct(MyTypeInt, nDest),
};
//And set them
for(int i = 0; i < data2Check.Length; i++)
{
if(data2Check[i].type == MyTypeString)
{
(string)data2Check[i].objDest = "New value";
}
else if(data2Check[i].type == MyTypeInt)
{
(int)data2Check[i].objDest = 2;
}
}
编辑: 好的,让我重新措辞一下。比如说,我有一组变量或一个类的成员,比如 50 个。它们都是不同的类型。 (在本例中,它们由字符串 strDest 和 int nDest 表示。)好的。现在我还有一个 name=value 对的二维数组,所以这些对中的每一个都应该根据“名称”分配给我的班级成员。我执行确定哪个“名称”归类的哪个成员的过程,下面的 for() 循环是我对分配过程的抽象。似乎缺少的是通过引用将我的类成员传递到这个 for() 循环的方法,以便我以后可以为它们分配值。
PS。到目前为止,下面的例子都没有完成这项工作......
【问题讨论】:
-
您是否在回发后运行此程序?您是否意识到您正在为每个回发/事件使用页面类的全新实例,而不是同一个实例?
-
另外,您的代码示例没有显示您在哪里观察到的结果,或者您期望观察到的内容与实际观察到的内容。
-
不,这与回发与否无关。这一切都在一个功能中。它是 C# 语言。正如您可能知道的那样,我来自 C/C++ 世界,在那里我会使用 & 运算符通过引用传递对象,但在 C# 中这似乎不起作用。这就是我在...中寻求帮助的原因。
-
结果在 for() 循环运行结束的这个块的末尾
-
您在帖子中提到了 ASP.NET。与 ASP.NET 相关的上下文中有哪些内容?你在你的页面上打印它吗?或者它是否发生在页面上的某个事件上(回发)?
标签: c# asp.net object pass-by-reference