コンテンツの非表示と表示に使用しているパネルを備えたASP.NETユーザーコントロールがあります。つまり、
<asp:Panel runat="server" ID=pnlContainer">
<!-- Some fairly uninteresting content -->
</asp:Panel>
オーバーライドとして可視プロパティがあります。つまり、
public override bool Visible
{
get { return pnlContainer.Visible; }
set { pnlContainer.Visible = value; }
}
設定すると、スタックオーバーフロー例外が発生しますが、キーワードをに変更するとnew
、つまり、
public new bool Visible
{
get { return pnlContainer.Visible; }
set { pnlContainer.Visible = value; }
}
すべて正常に動作します。どうしてこれなの?私はこれらのキーワードについて一般的によく理解していないと思います。それがここに表示されています。
また:
キーワードを付けない場合、Visual Studio は、ユーザー コントロールの既存のメンバーをマスクしているためnew
、キーワードまたはキーワードのいずれかを使用する必要があるという警告を表示します。override
ある意味では、パネルを使用してユーザー コントロールの表示を制御するという私の奇妙な習慣は、ここでは問題ではありません。貢献者の助けを借りて、それは明らかに狂っていて、やるべきではありません. しかし、私が興味を持った問題は、override
andnew
キーワードが非常に異なる方法で動作することと、その理由です。