Open17

C#を学ぶ

ふくいんふくいん

.NET Tutorial - Hello World in 5 minutes

ふくいんふくいん

Build .NET applications with C#

このモジュールでは

C#コードの最初の行を書く。
出力としてメッセージを表示するために2つの異なるテクニックを使用します。
コードが正しくない場合のエラーを診断する
演算子、クラス、メソッドなど、さまざまなC#構文要素を識別する。
  • C#は文字列を出力するときに、"で囲わないといけない。'ではダメ。

  • 文末に;が必須。

  • コメントは//

  • Console.WriteLineは改行あり。Console.Writeは改行なし。

    • Console.WriteLine は、既存の行に出力し、その後に新しい行を追加。Console.Writeは、既存の行に出力するだけ
  • Consoleの部分をClass、WriteLineをMethod、.をmember access operatorという。()をmethod invocation operatorでもある。

  • セミコロンは、コマンドの入力が完了したことをコンパイラに伝える。

  • case-sensitiveは、大文字小文字区別ということみたい。

ふくいんふくいん

スレッドを一回閉じる

  • Build .NET applications with C#から始めるのではなく、Get started with C#から始めるべきだった説が濃厚

今後の学び方

懸念点

  • StructureとかClassはあるのか?

そのほか

ふくいんふくいん

Get started with C#で始めるC#入門①

ふくいんふくいん

Write your first code using C# (Get started with C#, Part 1)

Write your first C# code

  • C#は文字列を出力するときに、"で囲わないといけない。

  • 文末に;が必須。

  • コメントは//

  • Console.WriteLineは改行あり。Console.Writeは改行なし。

    • Console.WriteLine は、既存の行に出力し、その後に新しい行を追加(改行が入る)。Console.Writeは、既存の行に出力するだけ
  • Consoleの部分をClass、WriteLineをMethod、.をmember access operatorという。()をmethod invocation operatorでもある。

  • セミコロンは、コマンドの入力が完了したことをコンパイラに伝える。

  • C#はcase-sensitive language

    • case-sensitiveは、大文字小文字区別ということみたい。
ふくいんふくいん

Store and retrieve data using literal and variable values in C#

  • literal value

    • 変更されることのない定数値
  • character literals(char)

    • Console.WriteLine('H')のように' 'で囲むとcharとなる。
    • Console.WriteLine('Hello')とするとToo many characters in character literalとエラーがでる。
      • charでは一文字だけしか指定できない
      • 一重引用符を使用すると、C# コンパイラは単一の文字を想定する。
    • Console.WriteLine("H")のように" "で囲むとstringとなる。
  • integer literals(int)

    • 整数
    • ex: Console.WriteLine(123);
  • floating-point literals

    • floating-point literalsの中にfloat, double, decimal型がある。
    • floatは最も制度が低い
Float Type Precision
float ~6-9 digits
double ~15-17 digits
decimal 28-29 digits
  • float literals(float)

    • float literalsを作成するには、数値の後に文字 F または f を追加
    • Fはliteral suffixと呼ばれる
    • ex: Console.WriteLine(2.625F);
  • double literals(double)

    • double literalsを作成するには、10進数をふつうに入力するだけ。
    • literal suffixはいらない。
    • コンパイラはデフォルトでdouble literalsを使用
    • ex: Console.WriteLine(2.625);
  • decimal literals(decimal)

    • decimal literalsを作成するには、数値の後に文字 M または m を追加
    • Mもliteral suffixと呼ばれる
    • ex: Console.WriteLine(12.39816m);
  • Boolean literals(bool)

    • true または false を表す値
    • 真実と虚偽の概念を表す
    • ex: Console.WriteLine(true);
データ型に関するTip

Suppose you needed to collect data from a user, like a phone number or postal code. Depending on the country/region where you live, that data may consist of numeric characters. However, since you rarely perform mathematical calculations on phone numbers and postal codes, you should prefer to use a string data type when working with them.

  • まとめ
    • string

      • words, phrases, or any alphanumeric data for presentation, not calculation
    • char

      • 単一の英数字
    • int

      • 整数
    • decimal

      • 小数を含む数値
    • bool

      • true / false
    • 公式はdecimalを使っていた。double floatは使わないのかな?

ふくいんふくいん

続き

  • 変数
    • 英数字とアンダースコア文字
    • アルファベット文字またはアンダースコアで始める
      • 数字から始めるのはだめ
      • 文字から始めよう。アンダースコアは特別な意味があるので初めで使用するのは避ける。
    • 大文字と小文字が区別される
    • C# キーワードはダメ。string など
    • キャメル ケースを使用
char userOption;

int gameScore;

decimal particlesPerMillion;

bool processedCustomer;
  • varで型推論
    • varで宣言された変数は初回代入時に型が決定される。
    • 最初に"Hello"を代入するとstringになり、そのあとに123を代入しようとしてもできない。
    • varは宣言と同時に代入する必要がある。
      • 宣言して、後から代入はダメ
    • varで型推論できるけど、できるだけデータ型は指定しよう!
ふくいんふくいん

Perform basic string formatting in C#

  • escape character sequence
    • 文字列の出力に影響を与える特殊文字を挿入するランタイムへの指示
    • \nは改行
    • \tはTAB
    • \""Hello"と出力できる。
      • Console.WriteLine("\"Hello\"");
    • \\とすると\と出力できる。
    • \uでUnicode エンコードされた文字列を出力できる
      • Console.WriteLine("\u3053"); => こ
        `
    • @ directive
      • テンプレートリテラルみたい
      • verbatim literalsという
      • エスケープシーケンスを使わなくても\がそのまま記述できる
Console.WriteLine(@"    c:\source\repos    
        (this is where your code goes)");
/*
c:\source\repos    
        (this is where your code goes)
*/
  • string interpolation
    • テンプレートリテラルみたい
    • string message = $"{greeting} {firstName}!";
    • 空白もちゃんと尊重される
    • string interpolationという
int version = 11;
string updateText = "Update to Windows";
string message = $"{updateText} {version}";
// string message = greeting + " " + firstName + "!";より${}の方が便利
Console.WriteLine(message);
Console.WriteLine($"{updateText} {version}!");
// => Update to Windows 11
// => Update to Windows 11!

string projectName = "First-Project";
Console.WriteLine($@"C:\Output\{projectName}\Data");
//@$はダメ
// => C:\Output\First-Project\Data

string directory = @"C\dotnet";
directory = directory + @"\";
Console.WriteLine(directory);
// => C\dotnet\
ふくいんふくいん

続き

  • 文字列と数字の足し算は暗黙的に型変換
    • ()で操作の順序を定義できる
string firstName = "Bob";
int widgetsSold = 7;
Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
// => Bob sold 14 widgets.

Console.WriteLine("Windows " + 7 + 4);
// => Windows 74
Console.WriteLine("Windows " + (7 + 4));
// => Windows 11

  • 四則演算使えます。除算(%:あまりだけ求める)もできる。
    • 指数はSystem.Math.Pow
    • 計算順はPEMDAS
    • decimal double float の計算のときは不正確な結果が得られることがある
    • (decimal)firstみたいに、型をキャストできる。(型変換)
Console.WriteLine(7 / 5);
// => 1 おそらくintとして処理?

decimal decimalQuotient = 7 / 5;
Console.WriteLine(decimalQuotient);
// => 1 不正確

decimal decimalQuotient1 = 7 / 5.0m;
// または decimal decimalQuotient = 7.0m / 5.0;
// または decimal decimalQuotient = 7.0m / 5.0m;
Console.WriteLine(decimalQuotient1);
// => 1.4

int first = 7;
int second = 5;
decimal quotient = (decimal)first / (decimal)second;
Console.WriteLine(quotient);
// => 1.4 正確
  • +=, -=, *=, ++, --も使える
  • v++++vは挙動が違う
int value = 1;
Console.WriteLine(value);
Console.WriteLine(value++);
Console.WriteLine(++value);
Console.WriteLine(value);
Console.WriteLine(++value);

/*
1
1
3
3
4
*/
ふくいんふくいん

Get started with C#で始めるC#入門②

ふくいんふくいん

Install and configure Visual Studio Code

  • VSCに入れる拡張機能
    • C# Dev Kit
    • IntelliCode for C# Dev Kit
  • dotnet cli
    • dotnet new
    • dotnet build
    • dotnet run
ふくいんふくいん

Call methods from the .NET Class Library using C#

  • Console.WriteLine()

    • クラス名 Console
    • メンバーアクセス演算子 .
    • メソッド名 WriteLine
    • メソッド呼び出し演算子 ()
  • C#における stateless stateful

    • stateは、特定の時点における実行環境の状態を表すために使われる。
    • stateless method
      • static methodsともいわれる
      • メモリ上のデータとかに依存しない
      • インスタンスを生成しなくていい
    • stateful method
      • instanse methodともいわれる
      • メモリ上のデータとかに依存
      • インスタンスを生成する必要あり
    • 一つのクラスでstateless method とstateful methodは同時に存在できる
    • クラスのインスタンスはオブジェクトと呼ばれる
    • new 演算子で新しいインスタンスを作成
  • 戻り値

    • 戻り値がないのをvoid mehotdという
    • 関係ないけど関数って単語出てこない・・・オブジェクト指向言語だからかな?関数の代わりにメソッド使ってるのかな
  • パラメーターと引数

    • パラメータと引数はよく同じ意味で使用される
      • パラメータは、メソッド内で使用されている変数
      • 引数は、メソッドが呼び出されたときに渡される値
  • 関係ないけど、一般的な入門書と比べて、プログラマーの自立を促してくれるエッセンスを与えてくれてる気がしている。内容自体はいいけど、プログラミング完全初心者向けではない気がした。何かしらのプログラミング経験があった方がいい気がする。

ふくいんふくいん

Add decision logic to your code using if, else, and else if statements in C#

  • ようやくifはいった・・・

  • 今更だけど、考え方ひとつひとつを丁寧に説明してくれてるの本当によい

  • ブール式とは、ブール値を返す任意の式

  • コード ブロックは中括弧 { } で定義されます。単一の単位として扱う必要があるコード行を集めます。

  • 条件式に関するTips

  • if else else if もふつうにつかえる

    • else は常に最後に