C#問題集をGitBookにまとめてます

こんにちは。

先日、C#の問題を投稿していましたが、良い機会なのでGitBookでまとめることにしました。

https://223n.gitbook.io/csl/

この問題集は、自分がC#の勉強をする際につまづいたり、ほかの方に教えていた際に困っていたところなどをメモしていたのを問題集にしています。

なるべく細かい解説を入れるようにしていますが、誤っていたらGitHubのリポジトリにIssueを送っていただければと思います。

今後もよろしくお願いします。

(練習問題)StringBuilderでの文字列生成

問題

次の仕様で出力されるソースコードとなるように、選択肢から4つのコードを選び正しい順番に並べなさい。

仕様

  • 1行目に文字列「あいうえお」、2行目に「かきくけこ」を出力するための文字列を生成します。
  • 1行目と2行目は、改行で区切られます。

選択肢

  • sb.Append("/l");
  • sb.Append("かきくけこ");
  • sb.Append("/t");
  • sb.AppendLine();
  • sb.Append("あいうえお");
  • sb.Append(String.Empty);
  • var sb = new StringBuilder();

(練習問題)パフォーマンス・カウンタ

問題

次のソースコードは、パフォーマンスカウンタを作成するCreateCountersメソッドのソースコードです。

なお、左端の数字は参考のために追加した行数です。

11行目にCounterAがWindowsパフォーマンス・モニタ(PerfMon)で使用できるように適切なコードを1つ選択しなさい。

ソースコード

01 void CreateCounters() {
02     if (!PerformanceCounterCategory.Exists("Contoso")) {
03         var counters = new CounterCreationDataCollection();
04         var ccdCounterA = new CounterCreationData{
05             CounterName = "CounterA",
06             CounterType = PerformanceCounterType.SampleFraction;
07         };
08         counters.Add(ccdCounterA);
09         var ccdCounterB = new CounterCreationData{
10             CounterName = "CounterB";
11
12         };
13         counters.Add(ccdCounterB);
14         PerformanceCounterCategory.Create("Contoso", "Help string", PerformanceCounterCategoryType.MultiInstance, counters);
15     }
16 }

選択肢

  • A. CounterType = PerformanceCounterType.RawBase;
  • B. CounterType = PerformanceCounterType.AverageBase;
  • C. CounterType = PerformanceCounterType.SampleBase;
  • D. CounterType = PerformanceCounterType.CounterMultiBase;

(練習問題)GACに登録する方法

問題

あなたは、複数のアプリケーションで使用されるアセンブリを開発しています。

グローバル・アセンブリ・キャッシュ(GAC)にアセンブリをインストールする方法として正しいものを2つ選びなさい。

選択肢

A. アセンブリ登録ツール(regasm.exe)を使用してアセンブリを登録し、GACにアセンブリをコピーする。

B. ストロング名ツール(sn.exe)を使用してGACにアセンブリをコピーする。

C. Microsoft登録サーバー(regsvr32.exe)を使用してGACにアセンブリを追加する。

D. グローバル・アセンブリ・キャッシュ・ツール(gacutil.exe)を使用してGACにアセンブリを追加する。

E. Windowsインストーラー2.0を使用してGACにアセンブリを追加する。

(練習問題)適切なアクセス修飾子

問題

あなたは、Carというクラスを開発しています。

Carクラスには、GetStatusメソッドというメソッドが含まれています。

GetStatusメソッドが、Carクラスから派生する任意のクラスからは使用できず、Carクラス内でのみ使用できる必要があります。

GetStatusメソッドに適切なアクセス修飾子を1つ選びなさい

選択肢

A. public

B. internal

C. private

D. protected internal

E. protected

(練習問題)分岐処理

問題

次の仕様を満たすソースコードを完成させるため、 [ A ] から [ D ] に適切なものを選択しなさい。

また、 [ A ] から [ D ] で、同じ選択肢を選択することもできます。

仕様

  • GetResponseメソッドは、char型のパラメータを受け取り、string型を返すメソッドです。
  • 検索が成功した場合は、対応した文字列を返します。
  • 検索に失敗した場合は、「invalid choice」を返します。

ソースコード

public string GetResponse(char letter) {
    string response;
    [ A ] (letter) {
        [ B ] 'a':
            response = "alpha";
            break;
        [ C ] 'm':
            response = "mike";
            break;
        [ D ]:
            response = "invalid choice";
            break;
    }
    return response;
}

選択肢

  • switch
  • if
  • case
  • else
  • default

Avaloniaを使ってみる

Ⅰ.Avalonia

Avaloniaは、「マルチ・プラットフォーム .NET UI フレームワーク」ということで、C#によるXAML形式でアプリ開発が出来るフレームワークです。

Avalonia – GitHub

Ⅱ.導入方法とプロジェクトの作成方法

※ここでは、Visual Studio 2017 Version 15.8.4で解説しています。

1.画面から「ツール(T)」→「拡張機能と更新プログラム(U)…」をクリックします。

Visual Studioのメイン画面

2.「オンライン」を選択します。

3.右上の検索ボックスに「Avalonia」を入力します。

4.「Avalonia for Visual Studio」を選択します。

5.インストールをクリックします。

6.「Visual Studioの再起動」が促されますので、一度、Visual Studioを終了して再起動します。

拡張機能と更新プログラム

7.新しいプロジェクトを開くと、「Visual C#」に「Avalonia」が追加されます。

8.「Avalonia Application」もしくは「Avalonia MVVM Application」を選択してプロジェクトを作成します。

新しいプロジェクト

後は、作成できたプロジェクトを元に開発を進めていくのですが、まだXAML開発はやったことがないため、少しずつ勉強しながらやりたいと思います。

Oracle.DataAccessでパラメータエラーが発生する

Oracle.DataAccess.dll (Oracle 12c版)を使ってSQLを発行している場合に以下のようなエラーが発生します。

パラメータ・バインディングが無効です
パラメーター名:その他

このエラーですが、SQLのコメントに「:」を含む場合や、「/* */」でコメントを書いており「/」がコメント内にあり「:」がある場合などに、パラメータと誤認してArgumentExceptionエラーが発生するようです。

全角の「:」にする、「/」を削除するなどの対策が必要です。