1. ホーム
  2. c#

[解決済み] 保護レベルによりアクセス不可?

2022-02-10 13:09:58

質問

この簡単なプログラムはコンストラクタの動作を学ぶためのテストに過ぎませんが、それでもこのエラーが発生する理由を知りたいのです。

    using System;

    public class methodTest
    {
        int a;
        int b;
        int c;
         public methodTest(int i, int j, int k)
        {
            a = i;
            b = j;
            c = k;
        }
    }

    public class methodObj
    {
        static void Main()
        {
        methodTest obj = new methodTest(10, 20, 30);
        Console.WriteLine("obj = " + obj.b);
        Console.ReadKey();
        }
    }

なぜ、このようなエラーが発生するのか、まったくわかりません。問題はConsole.WriteLineで、obj.bにアクセスできないと書かれています。変数はパブリッククラス内で宣言されているようですが、なぜアクセスできないのでしょうか?この問題の解決策を検索してみましたが、私が見つけたすべての質問は、私自身の理解に翻訳できる答えを得るには、はるかに複雑すぎました。 すべてのヘルプを感謝します。

解決方法を教えてください。

パブリッククラス内の変数であっても、デフォルトではプライベートであるため、パブリックとして宣言する必要があります。

ご覧ください。 アクセス修飾子

ネストしたクラスや構造体を含むクラスのメンバは、publicにすることができます。 protected internal、protected、internal、または private。 アクセスレベル クラスメンバおよび構造体メンバ(ネストされたクラスおよび構造体を含む)の デフォルトではプライベートです。 .

大文字の名前を使用するのがベストプラクティスであり プロパティ をパブリック変数として使用します。

public A { get; set; }

プロパティでは、メンバーの読み書きのアクセス制御や、読み込み・設定時のロジックを追加することができます。