c#staticメソッドのエラーとソリューションは非静的メンバーにアクセスできません
エラー:オブジェクトリファレンス必須
]次のコードスニペットがこの問題を示しています:
namespace WindowsApplication1
{
public partial class Form1 : Form
{
...
private static void SumData(object state)
{
...
setTextboxText(result); // 错误:非静态字段、方法或属性
}
}
}
問題の原因
]エラーメッセージは、静的メソッド sumdata
が非静的メンバー setextboxtext
を呼び出そうとすることを示します。静的メソッドは静的メンバーのみにアクセスできますが、非静的メンバーにアクセスするには、それが属するクラスのオブジェクトへの参照が必要です。
solutions
このエラーを修正する方法はいくつかあります:
method to static:
を設定します。
public static void setTextboxText(int result)
ただし、 settexboxtext メソッドがインスタンス変数へのアクセスを必要とする場合、静的に設定することはできません。
settexboxtext
:
]]
class Form1
{
public static Form1 Instance; // 单例
...
private static void SumData(object state)
{
...
Instance.setTextboxText(result);
}
}
、 instance の
form1 のコンストラクターで、現在のインスタンスに設定する必要があります。
private static void SumData(object state)
{
...
Form1 frm1 = new Form1();
frm1.setTextboxText(result);
}
のインスタンスがすでに存在する場合、この方法は機能しない可能性があります。
form1
に属する):
を設定します。
private void SumData(object state)
{
...
setTextboxText(result);
}
詳細については、MSDNドキュメントを参照してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3