ゼロから始めるプログラム学習（C#）_001

##    はじめに

 プログラミング言語 __<font color="blue">　【C#『シーシャープ』】</font>__ を使用して
 プログラムを最初から学習するための記載。 

###### なお、環境設定については、以下の　②-1　～　②-4  C#の環境構築方法 を参照

https://qiita.com/nekoozi/items/8abd289764232e8ae72a



## <font color="green">プログラムの構成</font>
#### 大きく以下の要素がある。
      1･･･ クラス（class）
      
      2･･･ エントリーポイント（Main メソッド）
           
      3･･･ 名前空間（namespace）

--------------------------------------------------------------


### 1･･･ <font color="blue">クラス</font>（class）
```C#
class Program
{
    // ここにコードを書いていく　←　　これはコメント
}
````

###### ※コメント
コード内にコメントを追加することで、他の人や自分自身に対して説明を記述
  // を使って、その行の末尾までコメントを追加
  /* と */ の間に複数行のコメントを書くことができます。

###### ※クラス
クラスはプログラム内でデータとメソッドをまとめたものです。
特定の機能や属性を持つオブジェクトを作成するために使用されます。

###### ※メソッド
メソッドは、プログラム内で実行される処理の単位です。
メソッドは特定の機能を持ち、その機能を呼び出すことで処理を実行します。

###### 例えば、以下は、Console.WriteLine("Hello, World!"); というメソッドは、コンソールにテキストを表示する機能を持っています。
--------------------------------------------------------------
### 2･･･ <font color="blue">エントリーポイント</font>（Main メソッド）

```C#
using System;

    class Program
    {
        /* ここがメインメソッドの開始  */
        static void Main(string[] args)
        {
            // テキストをコンソールに表示（文）
            Console.WriteLine("Hello, World!");
        }
        /* ここがメインメソッドの終了  */
    }
````

###### ※Console.WriteLine();
Console『コンソール』キーワード（Consoleクラス）
コンソール画面への文字列を表示したり、ユーザーからのキー入力をプログラムに受け取ったりします。
WriteLine()『ライトライン』メソッドは、C# の Console クラスに属しており、
コンソール画面にテキストを表示するために使用されます。
このメソッドは、引数として渡された文字列を表示し、自動的に改行を挿入します。

###### ※文（命令文）
C# の文は、セミコロンで終わる命令

###### ※ Main メソッド
Main『メイン』 メソッドは、プログラムが実行されると最初に呼び出される特別な場所です。
クラスはプログラム内でデータとメソッドをまとめたものです。

上記のブロック全体がメソッドMain です。
波かっこ { } で囲まれた部分をブロックといいます。
ブロックは以下のように入れ子にすることができます。

------------------------------------------------------------
### 3･･･ <font color="blue">名前空間</font>（namespace）

```C#
using System;
/* using が 名前空間のインポート */

/* namespace ～　が名前空間 */
namespace NestedBlocksExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 外側のブロック
            {
                Console.WriteLine("Outer Block Start");

                // 内側のブロック
                {
                    Console.WriteLine("Inner Block Start");
                    Console.WriteLine("Hello from the inner block!");
                    Console.WriteLine("Inner Block End");
                }

                Console.WriteLine("Back to the outer block");
                Console.WriteLine("Outer Block End");
            }
        }
    }
}
````
--------------------------------------------------------------
###### ※using
using（ユーズィング） キーワードを使うと、ソースファイル内で特定の名前空間を使用することを宣言できます。これにより、名前空間名を省略してコードを書くことができます。

###### ※namespace（ネームスペース）は、プログラミングにおいて異なるプログラムや
クラスで同じ名前の変数や関数、クラスを区別するための仕組みです。

名前空間を使用することで、コンフリクトや名前の衝突を回避し、コードの見通しがよくなります

上記は、
NestedBlocksExample という名前空間に属する Program クラス。
「.」で区切るNestedBlocksExample.Program という形で識別されます。

また、名前空間を使って階層的にグループ化された名前を指定することで、
名前の衝突を避けながら要素を識別できます。

###### ※コンフリクト
C# プログラムにおいて、コンフリクト（conflict）は、
Gitと呼ばれる、プログラムの変更履歴を管理できる分散型バージョン管理システムで、
同じ行を編集している場合にコンフリクトが発生します。

この場合、Gitは自動的にマージせず、開発者にコンフリクトの解消を求めます。

###### ※完全修飾名（Fully Qualified Name, FQN）は、
クラス名をパッケージ名と組み合わせて表現する方法
```C#
public class Program
{
    public static void Main()
    {
        java.lang.String a = "こんにちは";
        System.Console.WriteLine(a);
    }
}
````

###### ※using ディレクティブを使用すると、完全修飾名を省略して名前空間内のクラスを直接参照できます
```C#
using System;

class Program
{
    static void Main()
    {
        string a = "こんにちは"; // 完全修飾名を省略して string クラスを使用
        Console.WriteLine(a);
    }
}
````
--------------------------------------------------------------

　　　次回：ゼロから始めるプログラム学習（C#）_002
　　　https://qiita.com/nekoozi/private/90a3ed7cd0fb8519947c



## 参考文献

C#関連情報サイト様

   https://learn.microsoft.com/ja-jp/visualstudio/get-started/csharp/?view=vs-2022

   https://qiita.com/yamazaki_25/items/1c1d0a61e855c38e8226

   https://qiita.com/yamazaki_25/items/d04b2f2607aa1ed39fc5

   https://qiita.com/aki-1227/items/e1d9e7157571e55fdfa7

   https://programming.pc-note.net/csharp/namespace.html#google_vignette