はので、私はイオンVB6、クラスでカプセル化されたプロパティは、次の3つのカテゴリのいずれかに属することができることを理解OK何です:VB6
- 公開プロパティ
- 友達
- パブリック変数
これらとどのようにこれらは、C#などのより現代的な言語での公共および民間の特性と比較しないの違いは何ですか?
はので、私はイオンVB6、クラスでカプセル化されたプロパティは、次の3つのカテゴリのいずれかに属することができることを理解OK何です:VB6
これらとどのようにこれらは、C#などのより現代的な言語での公共および民間の特性と比較しないの違いは何ですか?
スコープ予選Public
を使用し、同じですFriend
determine異なるプロジェクトのクライアントがアイテムを表示できるかどうか。
Public
アイテムは、他のプロジェクト と同じプロジェクトでコードにクライアントコードにアクセスできるようになります。Friend
他のプロジェクトでコーディングする場合はではなく、のコードにのみアクセスできます。Private
アイテムは、同じクラスのコードにのみアクセスできます。クライアントが値を取得または設定したときの特性と独自のコードを実行することができますので、プロパティは、パブリック変数異なっています。 EDITディアナのコメントに従う:変数はByRefを関数に渡すことができ、変更は期待通りに機能することにも注意してください。これはプロパティの場合ではありません。
NB C#はより現代的かもしれませんが、IMHOは.Net処理よりもプロパティと公開変数のVB6処理がsignificantly betterです。
IMHO Microsoftは、.Netのプロパティとパブリックフィールドの間にこれらの相違点を作成する際に実際の設計ミスを犯しました。確信していない? .Netの最初のリリースの後、C#とVBコンパイラはautomatically implemented propertiesをサポートするように変更されました。これらを使用すると、1行のコードでプロパティを作成できるため、後で問題を起こさずにget/setにロジックを追加することができます。 IMHOは、公的変数が財産と区別できなくてはならないことを証明しています。
1と仮定すると、プロジェクトの種類は、実際にあなたのクラスが他のプロジェクト(すなわちのActiveX DLL、OCX、またはActiveX EXE)で使用することができます。
、Property Let
およびProperty Set
の手順では、
VB6では、クラスで定義されたパブリック変数は、プロパティとして表の下にコンパイルされます。これは、OLEビューなどのツールを使用して、コンパイル後にdllを検査することで確認できます。彼らはあなたが言及した "自動的に実装されたプロパティ"と同等です。 – tcarvin
申し訳ありませんが、「VB6では、クライアントを壊さずにパブリック変数をプロパティに変更できます」ということは、VB6に公開クラスの公開変数があるという印象をOPに与えるかもしれないと思った。 – tcarvin
また、変数はByRefを関数に渡すことができ、変更は期待どおりに機能します。これはプロパティの場合ではありません。私は、これが.NET/ILのフィールドとプロパティに分割された理由だと思います。 – Deanna
(プロパティ変数をカプセル化する)他のクラス変数を設定または取得することができた場合は、設定することができるので好まれ、それはあなたが内部の代わりに、友達
私的財産は、自分自身や他の家族によって使用される財産です。しかし、公有財産は、私たちの社会、社会、国のすべての人々が使用する財産です。
そんな単純な類推だけど、それは本当にそれをよく説明していると思う。 –
あなたはプライベートプロパティを忘れてしまった。どのような場合でも、この基本的な質問はマニュアルを読むことで簡単に答えられます。 – Bob77