ここにコードがあります。この記事の最後にある質問をご覧ください。これは効率的ですか、より良い方法でカプセル化を使用すべきですか?
public partial class myClass : Other.Class
{
long check1parameter = CurrentSession.CurrentFile.ID;
protected override void EnquiryLoaded(object sender, System.EventArgs e)
{
disableFields();
}
private void disableFields()
{
if (checkEverything()) {
EnquiryForm.GetControl("Status").Enabled = true;
}
}
public bool check1_method(long check1parameter) {
bool Check1 = false;
string stringToCheck = check1parameter.ToString();
if (stringToCheck.Contains("something")) {
Check1 = true;
}
return Check1;
}
public bool checkEverything() {
bool roleCheck = CurrentSession.CurrentUser.IsInRoles("RequiredRole");
bool check1 = check1_method(check1parameter);
bool checkEverything = false;
if (roleCheck && check1) {
checkEverything = true;
}
return checkEverything;
}
//other methods
}
コードは、誰かが役割を持っていることを確認すると、文字列が情報のビットが含まれていることをして、フィールドを無効にすることです。私は、これを実際のコードから簡略化して、キーポイントを概説しました。これらの単純なチェックを実行してフィールドを無効にすることだけが意図されていますが、後で展開できるように、これらのタスクの個別のメソッドを作成することをお勧めします。
long check1parameter
がその位置に定義されていると、オブジェクト参照エラーが発生します。それはcheck1_method()
にあり、正しく動作しましたが、可能ならば一度宣言して、複数の領域にわたって使用したいと思っています。
また、パラメータ\変数を内部で宣言するのではなくcheck1_method
に渡したいとします。この部分クラスのすべてのメソッドでcheck1parameter
を利用できるようにするにはどうすればよいでしょうか?何らかの形でOther.Class
にリンクされている別のクラスを指します。
私の主な質問は - これをできるだけ効率的にするにはどうすればいいですかここでpublic
の代わりにprivate
を使用する必要がありますか?私はまだC#で非常に新しく、まだカプセル化を理解していないので、簡単に私に行ってください! :)
'check1parameter'は長いです、なぜあなたはそれを文字列' something "と比較していますか? – Enfyve
長いですが、ときどきテキストを含み、文字列に変換されます。私は '何か'が文字列の一部であることをチェックしています(文字列に変換されていることを確認しています - 'stringToCheck = check1parameter.ToString()' –
longは数値型です。文字列リテラル '' Something "'を実際には比較していないのですが、 '' 123456 ''の行に沿って何かを意味しているのではないかと混乱しています。 ? – Enfyve