ホームページ > バックエンド開発 > C++ > 静的メソッドがC#で非静的メンバーにアクセスできないのはなぜですか?

静的メソッドがC#で非静的メンバーにアクセスできないのはなぜですか?

Susan Sarandon
リリース: 2025-02-02 17:46:09
オリジナル
333 人が閲覧しました

c#staticメソッドは、staticメンバー以外のエラーと解にアクセスできません

Why Can't a Static Method Access Non-Static Members in C#?

エラー:オブジェクトが参照されます

次のコードフラグメントは、この問題を示しています:

問題の原因
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        ...

        private static void SumData(object state)
        {
            ...
            setTextboxText(result); // 错误:非静态字段、方法或属性
        }
    }
}
ログイン後にコピー

エラー情報は、静的な方法が非スタットメンバーを呼び出そうとすることを示しています

。静的メソッドは静的メンバーのみにアクセスすることができ、非スタットメンバーは属するオブジェクトへの参照を必要とします。

SumData<决>solution setTextboxText

このエラーを解決する方法はたくさんあります:

<<> メソッドを設定します:

  1. ただし、 メソッドがインスタンス変数にアクセスする必要がある場合、静的に設定することはできません。 setTextboxText
  2. <<>
public static void setTextboxText(int result)
ログイン後にコピー

を呼び出します setTextboxText

    <> constructorで、現在のインスタンスに
  1. を設定します:Form1 setTextboxText <调>コールメソッドでA
  2. インスタンスを作成します:
class Form1
{
    public static Form1 Instance;   // 单例

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}
ログイン後にコピー

Form1 Instance<实>インスタンスが既に存在する場合、この方法は適用できない場合があります。 Instance = this;

    <调>コールメソッド
  1. は、stat派ではないインスタンスメソッドに設定されています(に属する):Form1
private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}
ログイン後にコピー
これは通常、コードのカプセル化とメンテナンスを維持するため、最良のソリューションです。

Form1詳細については、MSDNドキュメントを参照してください。

以上が静的メソッドがC#で非静的メンバーにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート