佐々木屋

技術的なことから趣味まで色々書きます

1.C#、VB.NET

クラスを考える⑤(メソッドの引数とプロパティ)

VB6で何かメソッド(サブプロシージャ)を作成する場合、public変数を用意するか引数を持たせるかになると思います。オーバーロードはありませんので、非常に冗長な関数群が出来るのが特徴です(但し仕様上そちらの方が効率的な場合もあります)。オブジェク…

クラスを考える④(静的クラス)

静的クラス(モジュール)のおさらい 静的クラス(VB.NETではモジュールと言います)は通常クラスと違い、インスタンスを作成しないクラスです。よって、newキーワードによる静的クラスの変数を作成することは出来ません。と言いつつ、実際には一つだけ実体…

クラスを考える③(勘違い)

ここまでのお話で、知らず知らずに「現実世界とプログラミング世界の乖離」が出てきています。じゃあクラスの中身(フィールドやメソッド)はあんこの量とか焼き加減だけど、現実のたい焼きの型にはあんこを入れる場所はないし、焼き加減もはたい焼きの型と…

クラスを考える②(クラスとは?インスタンスとは?)

クラスって何? まず、VB6訛が残っている方は、「モジュール」という概念を一旦忘れて下さい。この概念は後程「静的クラス」でお話します。前にも話しましたが、クラスを調べると設計図という言葉が出てきます。確かに設計図という例えは間違いないのですが…

クラスを考える①(前置き)

クラスはオブジェクト指向プログラミングの世界ではなくてはならない存在です。というか、クラスそのものがオブジェクト指向と言っても過言ではないくらい、大切な存在です。クラスって何?という方はググるか本を読んでみてください。「設計図」という表現…

アプリケーションを管理者権限で実行する

UACが有効の場合はアプリケーションを実行する際、管理者権限で実行しないと色々不便になります。 「右クリック」→「管理者権限で実行」とするか、アプリのプロパティの互換性の所で「管理者としてこのプログラムを実行する」とすればいいのですが、アプリケ…

非同期処理、マルチスレッド(余談:別スレッドからフォームコントロールを操作)

そもそもフォームもクラスですし、クラスにあるオブジェクトを別スレッドから操作は出来ません。フォーム自体がスレッドセーフではないから当然と言えば当然なんですが、非同期処理をやるとカウンタや進捗表示など、どうしてもフォームオブジェクトへアクセ…

アクセス修飾子

アクセス修飾子はメンバや型などのアクセスを制限することができる機能です。「スコープ」と言ったりもします。 アクセス修飾子一覧を記載します。これ以外にもありますが、主要というか、私が日常的によく使われるものだけをピックアップしています。 アク…

クラスのプロパティ④(アクセスレベル制御)

getter、setterそれぞれにアクセス修飾子を設定することが可能です。 C#のみ、自動実装プロパティでも従来の記述でもどちらも設定可能です。 //読み取り、書き込みともに公開 public string Hoge { get; set; } //読み取りのみ公開、書き込みはクラス内部か…

クラスのプロパティ③(getter/setter制御)

外部からの制御用として読み取り、書き込みの設定制御が可能です。 C#とVB.NETで少し記法が異なりますので注意しましょう。 読み取り専用 //getterのみを記述すれば読み取り専用となる //自動実装プロパティの場合 public string Hoge1 { get; } //通常記述…

クラスのプロパティ②(自動実装)

前回お話した通り、プロパティは自分でgetアクセサとsetアクセサを設定する必要がありました。自動実装プロパティを利用すると、この部分を簡略して記述することが可能です。 //通常 private string _hoge; public string Hoge { get { return _hoge; } set …

クラスのプロパティ①(基本)

クラスのプロパティはオブジェクト指向プログラミングの中でも非常に有用で、クラス構築ではなくてはならない存在です。オブジェクト指向プログラミングの話でよく出てくる「隠蔽」を実現することができます。VB6出身であれば分かりますが、所謂Public変数を…

VB.NETのプロパティは引数を付けられる

便利なのか余計なお世話なのか分かりませんが、VB.NETのプロパティは引数を実装できます。 例えば以下のような感じ。 Private piyo As String() = {"a", "b", "c"} Public ReadOnly Property Hoge(ByVal index As Integer) As String Get Return piyo(index)…

非同期処理、マルチスレッド(ThreadPool)

<ThreadPoolクラスの基本> 前回Threadクラスを用いた非同期処理を説明しましたが、スレッドの新規作成は思っている以上にコストがかかります。スレッドは生成だけではなく破棄される時もコストがかかるので、頻繁に使用すると処理がとても重くなってしまい…

非同期処理、マルチスレッド(古の手法:Thread)

<Threadクラスの基本> Threadクラスは.NET Framework1.1からある一番古い手法です。現在はほとんど使用されていないのではないでしょうか。 むしろ今どきこれをつかって非同期処理をやると考えているのであれば、間違いなく止めた方がいいでしょう。Thread…

非同期処理、マルチスレッド(基本)

<そもそも非同期処理とは何ぞや?> まず同期処理から。処理の流れ(スレッド)は一本なので、途中でちゃちゃを入れることが出来ません。例えば、重たい処理と軽い処理を順番に処理させるプログラムを考えましょう。同期処理の場合、当然ながら処理中は別の…