我有一个公共课A
,其中包含多种方法。
我还有两个类,我在其中创建了类A
的对象来调用它的方法MethodA()
。
现在它表现得非常奇怪:当我从其他两个类调用MethodA()
时,它会向两个类返回相同的值,尽管输入与这些类不同。
请注意我的应用程序处于多线程环境中。
我的代码的一些例子如下:
namespace Project1
{
public Class A : SourceClass
{
public string MethodA(string input)
{
//it performs a logic and returns string variable
string str1 = input;
string str2 = "Hello";
string str3 = "";
if(str1.Compare(str2) == 0)
{
str3 = "Same";
}
else
{
str3 = "Different";
}
return str3;
}
public Class B : SourceClass
{
A objA = new A();
string input1 = "Hello";
string str1 = objA.MethodA(input1);
MessageBox.Show(str1 + "from Class B");
}
public Class C : SourceClass
{
A objA = new A();
string input1 = "Hi";
string str1 = objA.MethodA(input1);
MessageBox.Show(str1 + "from Class C");
}
}
现在,当我运行我的应用程序时,我从类B
得到相同的输出,并从类C
获得相同的输出,而我应该从类C
获得不同。
由于它是一个多线程环境,我认为我缺少锁定一个对象。请指导我哪里出错了。
答案 0 :(得分:0)
你应该改变
if(str1.Compare(str2))
作为
if(str1.Compare(str2)==0)
根据输入,比较返回负,零或正。