使用“this” - 许多类的实例,调用私有方法

时间:2009-10-05 06:59:25

标签: c#

我有一个服务器,其中每个连接的客户端都由客户端类的实例表示。该类负责数据处理。我一直认为,即使有相同类的更多实例,在调用私有函数时,我也不需要使用“this”关键字,因为它被视为本地调用,同时:

if (data[1]==2 && data [3]==2)
   SendAck();

但是当有更多的玩家(更多的客户端类)时,有时会将消息发送给另一个玩家,而其他方法也是如此。当我将“this”添加到所有方法调用时,一切正常。是否可能没有“这个”它从其他类调用方法? 谢谢!

EDITL:在每个实例中使用公共字典等公共成员,然后在调用TryGetValue /时不使用此关键字/?

3 个答案:

答案 0 :(得分:3)

不,这是不可能的。 “这个”几乎都是可选的。您需要它的情况是,如果您有一个方法(例如您的构造函数)接受与您的类的字段相同名称的参数,并且您希望将这些参数的值分配给字段,例如:

class Test
{
    private string strValue;

    public Test(string strValue)
    {
        this.strValue = strValue;
    }
}

我认为你的代码中还有另一个问题。你能提供更多细节吗?

答案 1 :(得分:1)

SendAck();this.SendAck();之间没有任何区别,如果该方法是您班级的成员。您将始终从调用该方法的实例调用该方法。

使用调试器检查调用方法实际执行的操作。您会看到它是相同的方法,有或没有this关键字。

答案 2 :(得分:0)

来自C#规范:

  

7.5.7此访问

     

...
  当在一个中的primary-expression中使用它时   实例方法或实例访问器   一类,它被归类为   值。值的类型是   类的实例类型(第10.1.1节)   使用发生的地方,和   值是对象的引用   该方法或访问者是   调用

我怀疑您在代表连接客户端的类型实例的多线程访问方面存在问题。