2011-07-20 4 views
0

私のプロジェクトにはフォームとクラスが含まれているとします。私は、クラスの両方のフォームからアクセスできる変数を作成したいと思います。 VB6で私は(モジュール/クラス)でパブリック変数を作成することができ、簡単にそのようにアクセス:c#VB6に相当する公開変数

VB6例Iは、C#で、上記の機能を作り出すことができる方法

[Module code] 

Public string_name as string 

[/Module code] 

[Form Code] 

string_name = "test data" 
MsgBox(string_name) ' Returns "test data" 

[/Form Code] 

?パブリッククラスを作成する必要があると仮定していますが、パブリック変数を宣言するための最良の方法は不明です。それは良い方法ではありませんけれども

は、(パブリックとしてフィールドを公開する)あなたはC#で同じことを行うことができ、

エヴァン

+0

[プロパティ](http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx)の使用を検討してください。クラスのメンバーに公開アクセスを提供することはお勧めできません。彼らは実装の詳細を公開する –

答えて

1

をお願いします。代わりに

使用特性:

// public string property 
public string string_name { get; set; } 

// within class  
string_name = "test data"; 
MsgBox(string_name); 

// from another class 
myClassInstance.string_name = "other test data"; 
+0

これは良い習慣ではないのはなぜですか?これはちょうど私が探していたもののようです... –

+0

@Evan - これは実装の詳細を公開していて悪いOOP(カプセル化と情報隠蔽に違反している)です。 – Oded

+0

同じフォームの変数を作成して使用する方がずっと賢明だと言っていますか? –

2

あなたは公共の静的変数とpublic static classを作成することができます。

public static class MyPublicData 
{ 

    public static string MyData1 = "My public data"; 

} 

使用するには:

var x = MyPublicData.MyData1; 
0
public class MyClass 
{ 
    public int MyPublicVariable; 
    public int MyPublicProperty {get; set; } 
} 
+0

クラスとメンバを静的にすることは、あなたが探しているものかもしれません。 – Fantius

+0

メンバー/クラスを静的にする効果はありますか? –

+1

@Evan:メンバをパブリックと静的にすると、クラスのインスタンスを作成せずにアクセスできます。たとえば、この場合、MyClass.MyPublicPropertyを使用してプロパティを取得または設定できます。 – Mostlyharmless

0

は、パブリック静的変数とpublicクラスを試してみてください。例:

public class PortalResources 
    { 
     #region Members 

     public enum Mode 
     { 
      LargeIconMode, 
      SmallIconMode, 
      DetailsMode 
     }; 

     public static int LargeIconSize = 150; 
     public static int SmallIconSize = 75; 
     public static string Name = "Name"; 

     #endregion 

    } 

使用:

int IconSize = PortalResources.LargeIconSize; 
int ViewMode = PortalResources.Mode.LargeIconMode; 
+0

ここでenumの目的を説明していただけますか? –

+1

"public static enum"はコンパイルされないので、例として挙げました。 enumをstaticとして宣言することなく静的に使用できます。もちろん、あなたのアプリケーションがそれを要求しない限り、enumを使う必要はありません。私は完全性のためにそれを入れました。 – Mostlyharmless

0

VB公開(またはグローバル)変数の等価クラスのパブリック静的プロパティです。

あなたはしかし、これにアクセスするには

Classname.PropertyName 

を指定する必要があります。

0

あなたは定数または静的な読み取り専用の値になるように値が必要な場合は、静的クラスに入れてください:

public class Globals 
{ 
    public const String value = "Hello World"; 
} 

public static class Globals 
{ 
    public static value2 = "Hello World"; 
} 

値は単にアクセスできるようにする必要がある場合(ない読み取り専用)、そして、あなたが優れていますこの値を設定ファイルに貼り付けて、設定を取得します。

+0

静的なクラスに定数と読み込み専用変数を置く必要はありません –

+0

@ Muad'Dib:あなたは間違いありません。 –

+0

あなたは静的なクラスに入れることができますが、そうする必要はありません。実際、私は彼らをMyPageのような意味のあるクラスに入れました.MaxLines –

関連する問題