在C#中," this"分配的示例是什么?

时间:2020-03-05 18:55:16  来源:igfitidea点击:

有人在Cmethod中有有用的this分配示例吗?面试时曾有人要求我这样做,但我仍然有兴趣回答自己。

解决方案

回答

我们不能覆盖"此"。它指向当前的对象实例。

回答

从语法角度来看,唯一正确的位置是C3.0中的扩展方法,当我们将方法的第一个参数指定为foo(ftype this,...)时。然后可以将此扩展名用于ftype的任何实例。但是,这只是语法而不是真正的此ovveride操作。

回答

使用this关键字可确保仅访问当前类型范围内的变量和方法。当字段/属性与局部变量或者方法参数之间存在命名冲突时,可以使用此方法。

通常在构造函数中使用:

private readonly IProvider provider;
public MyClass(IProvider provider)
{
  this.provider = provider;
}

在此示例中,我们将参数提供程序分配给私有字段提供程序。

回答

如果要求我们为此分配一些内容,则有很多示例。我想到的是告诉一个控制者,他的父亲是谁:

class frmMain
{
    void InitializeComponents()
    {
        btnOK = new Button();
        btnOK.Parent = this;
    }
}

回答

当其他答案说我们不能分配给" this"时,其他答案是错误的。是的,我们不能使用类类型,但可以使用结构类型:

public struct MyValueType
{
    public int Id;
    public void Swap(ref MyValueType other)
    {
        MyValueType temp = this;
        this = other;
        other = temp;
    }
}

在任何时候,结构都可以通过分配" this"来改变自身,就像这样。