例如我有这么个类:
public class timeInput
{
public string strTime;
public string strEvent;
}然后有一个函数
void Display(void)
{
int i; for(i=0; i < 2; i++)
{
timeInput t = new timeInput();
t.strTime = (string)i;
t.strEvent = (string)i;
} //我的问题是现在我有了两个对象timeInput的实例,并且他们的名字都是t
//但是他们的成员分别有不同的值,这时,我怎么才能区分这两个实例,并提取其中字段的数据
//求高手指点,谢谢!! }
public class timeInput
{
public string strTime;
public string strEvent;
}然后有一个函数
void Display(void)
{
int i; for(i=0; i < 2; i++)
{
timeInput t = new timeInput();
t.strTime = (string)i;
t.strEvent = (string)i;
} //我的问题是现在我有了两个对象timeInput的实例,并且他们的名字都是t
//但是他们的成员分别有不同的值,这时,我怎么才能区分这两个实例,并提取其中字段的数据
//求高手指点,谢谢!! }
struct MyStruct
{
private long num; public long Num
{
get
{
return num;
}
set
{
num = value;
}
}
}
对于这个类型,默认的GetHashCode()是基于第一个成员num来生成的。对于Int32及其范围之内的类型来说,返回值等于num的值。但是上例中num的范围超出了Int32的范围,这就可能会造成一些小麻烦。比如我下面这个例子:MyStruct myStruct1 = new MyStruct();
MyStruct myStruct2 = new MyStruct();
myStruct1.Num = -2147483648;
myStruct2.Num = 2147483647;Console.WriteLine(myStruct1.GetHashCode());
Console.WriteLine(myStruct2.GetHashCode());
两个不相等的实例得到的结果却相等,都是2147483647。
这个ReferenceEquals也是object类本身就有的一个方法【来自MSDN】
public static bool ReferenceEquals (
Object objA,
Object objB
)参数
objA
要比较的第一个 Object。 objB
要比较的第二个 Object。 返回值
如果 objA 是与 objB 相同的实例,或者如果二者都为空引用,则为 true;否则为 false。
局部变量t就自动消失了,因为是分配在堆栈上的,
下次再循环的时候,已经就不是过去的t了···所以你的问题根本就不是问题
也不可能会出现两个临时变量t的情况···
gethashcode方法就可以了···至于你举的那个例子不过是特殊情况罢了
估计楼上的兄弟都没有仔细看你的程序就是直接看你的问题了···
=============================================被你发现了。。嘿嘿,是没仔细看,确切的说是觉得里面有问题,T的生存期不就在一个循环中嘛,所以也没多想了
假设一个窗体为form1 其上有一个按钮, 点击这个按钮出现 form2 这时 每次点击都会出现一个form2 问题是:这么多的form2怎么区分呢?
请高手给个可行的例程,谢谢!!