(2)看護師からC#開発者へ-C#入門基礎:変数、演算子と型変換

(2)看護師からC#開発者へ-C#入門基礎:変数、演算子と型変換

看護師でありながら、思い切ってクロスオーバーしC#プログラミング学習に取り組んでいます。ここでは2日目の学習内容として、変数、演算子、エスケープ文字などの重要な知識ポイントを共有します。

最終更新 2025/02/22 19:20
勇敢的天使
読了目安 7 分
カテゴリ
共有
テーマ
看護師からC#開発者へ
タグ
.NET C# 転職開発 プログラミング

0. はじめに

退職したナースの皆さん、今はどんな仕事をされていますか?私は大胆な決断をしました——転職して、.NET開発技術を学ぶことです。この考えは、ある人には信じられないかもしれませんが、私にとっては、好きなことをすることこそ何よりも大切です。人生は未知と挑戦に満ちています。勇気を出して最初の一歩を踏み出せば、それは素晴らしい始まりです。

初日の学習は比較的軽めで、主にさまざまな概念の入門前の基礎知識を学びました。.NET開発とは何か、そしてこの技術で実現できる強力な機能について深く理解しました。私が選んだ開発言語はC#で、VS(Visual Studio)、VS Code、Riderなどの統合開発環境(IDE)を使ってプログラムを作成できます。現在は、Visual Studioの各機能と使用上の注意点を一通り把握しました。

次に、2日目の学習内容を詳しく共有します。これらは今後のプログラミングに重要な基礎となるものです。主にコメント記号、ショートカットキー、変数、演算子、型変換、エスケープ文字などをカバーしています。私が特に重要だと思う部分を以下に記録します。

1. コメント記号

コメント記号はプログラミングにおいて、コードの無効化と説明の二重の役割を果たします。先生は「コメントを書かないのは『無責任』だ」と冗談交じりに言っていましたが、それほど重要です。C#には3種類のコメント記号があります。

  1. 1行コメント//を使用し、その後ろにコメント内容を入力します。この形式はその行のみ有効です。例:
// このコード行はHello Worldをコンソールに出力する
Console.WriteLine("Hello,World!");
  1. 複数行コメント/* コメント内容 */で、複数行をコメントアウトできます。以下のように:
/*
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
*/
  1. ドキュメントコメント///。主にクラスやメソッドを説明するために使われ、ルールが比較的複雑で、まだ学習中です。

2. 変数の定義と関連知識

2.1 変数の格納構文

変数を定義する際は、まず変数の型と変数名を宣言します。構文は「変数型 変数名;」で、その後変数に値を代入します。「変数名 = 値;」。変数を定義する際の重要なポイントは2つ:①格納するデータの型を正確に決めること、②変数に意味のある名前を付けることです。後で使用するときにその用途を明確に理解できます。注意点として、=は数学的な等号ではなく、代入演算子であり、右辺の値を左辺の変数に代入します。また、宣言と代入を同時に行う簡略形式「変数型 変数名 = 値」もあります。例:

// 宣言してから代入
int num;
num = 10;

// 簡略形式
int num2 = 20;

2.2 主なデータ型

  • 整数型int。整数のみ格納でき、小数は格納できません。例:int age = 25;
  • 小数型double。整数も小数も格納でき、小数点以下の有効桁数は15~16桁で、intより範囲が広いです。例:double price = 19.99;
  • 金額型decimal。金額の小数を格納するために使用し、値の後ろに「m」(大文字小文字問わず)を付けます。例:decimal money = 5000m
  • 文字列型string。複数のテキストを格納し、空値も格納できます。値は半角のダブルクォーテーションで囲みます。例:string zsName = "张三"。文字列は空文字も可能:string s = ""。注意:文字列は文字とは異なり、文字は1文字のみです。
  • 文字型char。1文字のみ格納し、空値は格納できません。値は半角のシングルクォーテーションで囲みます。例:char c = 'a'

3. 変数の命名規則

変数名には意味を持たせ、現段階では26の英文字で始め、その後ろに英文字、数字、アンダースコアを使用できます。また、以下の点に注意します:

  • キーワードとの衝突:変数名はC#のシステムキーワード(青色で表示)と同じにできません。例えば、変数名を「int」「class」などにはできません。
  • 大文字小文字の区別:C#では大文字と小文字が区別されます。「myVariable」と「MyVariable」は異なる変数です。
  • スコープ内での一意性:同じスコープ内では、同名の変数を重複して定義できません。

3.1 命名規約

  • キャメルケース:変数名の最初の単語の先頭を小文字、それ以降の単語の先頭を大文字にします。変数名によく使われます。例:int myAge = 28;
  • パスカルケース:各単語の先頭を大文字にします。クラスやメソッド名によく使われます。例:class MyClass { }

4. 代入演算子

=」は代入演算子で、右辺の値を左辺の変数に代入します。「=」で接続された式は代入式であり、代入式の値は左辺の変数の値になります。例:「int number = 10;」この例ではnumberの値は10であり、代入式全体の値も10です。

5. 「+」の役割

  • 連結:「+」の両側のいずれかが文字列の場合、連結の役割を果たします。例:string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2; この場合、resultの値は「Hello World」です。
  • 加算:両側が数値の場合、加算演算を行います。例:int num1 = 5; int num2 = 3; int sum = num1 + num2; この場合、sumの値は8です。

6. プレースホルダー

プレースホルダーを使用する際は、まず{0}{1}などの「穴」を設定し、順番に引数を渡して「穴を埋めます」。引数の数はプレースホルダーの数と一致させる必要があります。多い場合は効果がなく、少ない場合は例外が発生します。プレースホルダーは順番に出力されます。例:

string name = "张三";
int age = 20;
Console.WriteLine("名前:{0}、年齢:{1}", name, age);

7. エスケープ文字

エスケープ文字は「\」と特殊文字から構成され、特別な意味を持ちます:

  • \\:1つの「\」を表します。例:string path = "C:\\Program Files";
  • \n:改行を表します。例:Console.WriteLine("1行目\n2行目");
  • \":1つの半角ダブルクォーテーションを表します。例:string str = "He said, \"Hello!\"";
  • \t:タブキーによるインデントを表します。例:Console.WriteLine("Name\tAge");
  • \b:バックスペースキーを表します。文字列の両端にある場合、効果はありません。例:string str2 = "Hel\blo"; この場合、str2の値は「Helo」です。
  • \r\n:Windowsシステムでは改行を表します。Windowsは「\n」だけでは認識しません。例:Console.WriteLine("1行目\r\n2行目");
  • @記号
    • \」のエスケープ機能を無効にし、単なる「\」として扱います。例:string path2 = @"C:\Program Files";
    • 文字列を元の形式でそのまま出力します。例:string str3 = @"This is a multiline string";

8. 算術演算子

  • 「+」:加算。例:int a = 3; int b = 2; int c = a + b; この場合、cの値は5。
  • 「-」:減算。例:int d = 5; int e = 3; int f = d - e; この場合、fの値は2。
  • 「*」:乗算。例:int g = 4; int h = 3; int i = g * h; この場合、iの値は12。
  • 「/」:除算。例:int j = 10; int k = 2; int l = j / k; この場合、lの値は5。
  • 「%」:剰余。例:int m = 10; int n = 3; int o = m % n; この場合、oの値は1。

9. 型変換

9.1 暗黙的型変換

C#では、等号の両側で演算に参加するオペランドの型は一致している必要があります。一致しない場合、以下の条件を満たすと自動的に型変換(暗黙的型変換)が発生します:

  • 2つの型が互換性がある:例えば、intdoubleは互換性があります(どちらも数値型)。
  • 変換先の型が変換元の型より大きい:例えば、doubleの範囲はintよりも大きいので、int型の値を自動的にdouble型に変換できます。
int number = 10;
// int → double、自動型変換
double d = number;

9.2 明示的型変換

  • 両方の型が互換性がある:例えばintdoubleは互換性があります。
  • 大きい型から小さい型へ:範囲の大きい型(doubleなど)を範囲の小さい型(intなど)に変換する必要がある場合、明示的型変換(強制型変換)を行います。
    構文(変換先の型)変換する値
double d = 303.6;
// double→int、強制型変換
int n = (int)d;
Console.WriteLine(n);
Console.ReadKey();

明示的型変換で「(int) d」と書くのは、コンパイラにddouble型)の値を強制的にint型に変換することを明示的に伝えるためです。この変換ではデータの精度が失われる可能性があります。例えば上記の例では、303.6int型に変換すると303になり、小数部分が切り捨てられます。

10. 注意

先ほどの\n\r\nの説明に関して少し疑問があったので、AIに質問して以下の回答を得ました:

Windowsシステムでは通常「\r\n」を使って改行を表しますが、状況によっては「\n」でも改行効果が得られることがあります。ただし、厳密には両者には違いがあるため、上記の説明は完全に正確とは言えません。以下に詳しく分析します:

  • 「\r\n」と「\n」の意味
    • 「\r\n」:「\r」はキャリッジリターン(復帰)で、カーソルを現在の行の先頭に移動します。「\n」はラインフィード(改行)で、カーソルを次の行に移動します。Windowsシステムのテキストファイルや多くのプログラミング言語では、伝統的に「\r\n」が改行文字として使われます。これは初期のタイプライターやテレタイプライターの時代からの習慣で、まず行頭に復帰し、次に改行する必要がありました。
    • 「\n」:UnixやLinuxシステムでは通常「\n」が改行文字として使われます。
  • 異なるシナリオでの振る舞い
    • C#言語においてConsole.WriteLineメソッドでは、Windowsシステムでは「\r\n」を改行文字として使うことが推奨されます。これにより、Windowsのコマンドライン環境やWindowsベースのテキスト処理シナリオで正しく改行が表示されます。実際には「\n」でも改行は可能です。これは、Console.WriteLineメソッドが出力時に「\n」をある程度変換処理し、Windows環境でも改行表示できるようにするためです。ただし、テキストファイルへの書き込みなど、Windowsの改行標準に厳密に従う必要があるシナリオでは、「\n」を使うと改行表示が異常になる可能性があります。
    • その他のシナリオ:Windowsシステムのバッチファイル(.bat)やテキストエディタなどでは、「\n」を改行として認識せず、「\n」を通常の文字として扱い、期待通りの改行が得られません。「\r\n」のみが正しく改行されます。

まとめ

今日は先生についてコード練習をしました。聞きながら操作することで、これらの知識の理解と記憶が深まりました。ただし、今日学んだ内容は多く、消化吸収にはさらに時間が必要です。自分で数行のコードを書けるようになり、達成感がありますが、まだ理解できていない部分もあります。例えば、明示的型変換の「int n = (int) d;」の具体的な原理や適用シナリオについては、さらに深く研究する必要があります。今後の学習の道のりは長いですが、引き続き努力し、C#プログラミングの奥秘を探求していきます。

さらに探索

関連読書

その他の記事
同じタグ 2026/02/07

AOTの使用経験のまとめ

プロジェクト作成当初から、新機能を追加したり新しい構文を使用したりした場合には、すぐにAOT公開テストを実施するという良い習慣を身につけるべきです。

続きを読む