C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: メソッドの共通化


(過去ログ 121 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■72626 / inTopicNo.1)  メソッドの共通化
  
□投稿者/ しーちゃん (21回)-(2014/06/23(Mon) 14:55:08)

分類:[.NET 全般] 

2014/06/23(Mon) 16:32:03 編集(投稿者)

いつもお世話になっています。
メソッドの共通化についてどうしてもわからない点があるのですが、
もしお分かりの方がいらっしゃいましたら助けてください。

下記の2つのメソッドと共通化したメソッドがあるのですが、
クラスの基礎がまだつかめてなくて共通化メソッドのprivate AppControlDetail checkAppStatus()って、
アクセスレベルがprivateは理解できます。 次に、AppControlDetailクラス型??なんじゃそれ? checkAppStatus()??なんじゃそれ?です。

また、共通化したメソッドの中に、AppControlDetail comStatus = null;とあり、
インスタンス変数の省略化?と疑問があり、またまた、戻り値でreturn comStatus;を返しているのですが、
クラス型の変数AppControlDetail comStatus = null;は何のために使っているのでしょうか?
また、クラス型の変数はどのような時に使うべきですか?


伝え下手な私で申し訳ありませんが、
下記にメソッドを記載いたしますのでご教授のほどよろしくお願いします。
■1のメソッド
public void CheckAppStatus()
{

// ストアド実行
AppControlService.Instance.SrcBatchStatus = _Repository.GetAll<AppControlDetail>(_Repository.sniDB, "uspBBJGetAppBatchStatus");

this.EventAggregator = AppEnvironmentService.Instance.GlobeEventAggregator;

foreach (var checkStatus in BBJ.Infrastructure.AppShell.ParameterModule.Service.AppControlService.Instance.SrcBatchStatus)
{
string message = "";

if (checkStatus.BatchStatus == "Y")
{
message = TranslationManager.Instance.Translate("MSG.COM90004").ToString();
}
// アプリケーション環境を公開
AppEnv appEnv = new AppEnv();
appEnv.Title = AppEnvironmentService.Instance.AppFullName;
appEnv.Version = AppEnvironmentService.Instance.AppMainVersion;
// MSG:バッチ処理の実行中です。バッチ処理完了後に再度実施してください。
appEnv.BatchMessage = message;
EventAggregator.GetEvent<AppEnvEvent>().Publish(appEnv);
}

}

■2のメソッド
public void CheckBtnControl()
{

AppControlDetail comStatus = null;
comStatus = checkAppStatus();
string showMessage = "";
if (comStatus != null)
{

// MSG:バッチ処理の実行中です。バッチ処理完了後に再度実施してください。
showMessage = TranslationManager.Instance.Translate("MSG.COM90004").ToString();

//バッチ実行中のアプリケーションの制御用のメッセージボックスを表示する
MessageBox.Show(showMessage, AppEnvironmentService.Instance.AppName, MessageBoxButton.OK, MessageBoxImage.Information);

}
}

■共通化メソッド
private AppControlDetail checkAppStatus()
{
AppControlDetail comStatus = null;

// ストアド実行
AppControlService.Instance.SrcBatchStatus = _Repository.GetAll<AppControlDetail>(_Repository.sniDB, "uspBBJGetAppBatchStatus");

foreach (var checkStatus in BBJ.Infrastructure.AppShell.ParameterModule.Service.AppControlService.Instance.SrcBatchStatus)
{
if (checkStatus.BatchStatus == "Y")
{
comStatus = checkStatus;
}
}
return comStatus;

}

■言語:C#
環境:WPF,Visual Studio2012
DB:SQL Server
引用返信 編集キー/
■72689 / inTopicNo.2)  Re[1]: メソッドの共通化
□投稿者/ tocs (40回)-(2014/07/05(Sat) 01:16:19)
tocs さんの Web サイト
No72626 (しーちゃん さん) に返信
> 次に、AppControlDetailクラス型??なんじゃそれ? checkAppStatus()??なんじゃそれ?です。
どちらもユーザ定義クラスとユーザ定義関数ではないのでしょうか?
Tagジャンプするなどして定義を参照されてはいかがですか?

> クラス型の変数AppControlDetail comStatus = null;は何のために使っているのでしょうか?
無駄コードです、null状態を生み出し百害あって..なので宣言時初期化を強くお勧めします。
共通化メソッドの例では下記コードのようにできるかと。
private AppControlDetail checkAppStatus()
{
   // ストアド実行
   AppControlService.Instance.SrcBatchStatus = _Repository.GetAll<AppControlDetail>(_Repository.sniDB, "uspBBJGetAppBatchStatus");
   return BBJ.Infrastructure.AppShell.ParameterModule.Service.AppControlService.Instance.SrcBatchStatus.Where( s => s.BatchStatus = "Y").Last();
}

> また、クラス型の変数はどのような時に使うべきですか?
質問はクラスと構造体の使い分けですか、それともクラスオブジェクトをどう使うかという話ですか?
前者の場合、迷うようならクラスにしてほぼ害はありません。構造体を使うことが推奨されているのはサイズが16byte以下の場合です。
http://msdn.microsoft.com/ja-jp/library/ms173109.aspx


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -