C#を学ぶ
- 時系列順に書いていく。
- VSCにおけるC#の使いこなしも学んでいきたい。
- さっくっとアプリを一つ作れたらいいな。
- 便利なサイト
.NET Tutorial - Hello World in 5 minutes
-
https://dotnet.microsoft.com/en-us/learn/dotnet/hello-world-tutorial/install
- 問題なく終了
- VSCの
SOLUTION EXPLORER
初めて使った・・・ -
https://youtu.be/6BcPIvVfVAw?si=E7P5fmc402le86W0
- .NETでは
C#
、F#
が使えるみたい - 開発環境はVS、VSCなどがあるみたい
- .NETと.NET Frameworkは別物
- .NETはLinux macOS Windows
- .NET FrameworkはWindowsのみ
- .NETを使おう!
- .NETでは
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は、大文字小文字区別ということみたい。
C#の基本文法を学んでいく
- C++、Python、JavaScriptをやってきた分そんなに学習時間はかからなさそう。
- freeCodeCampで学ぶ。
スレッドを一回閉じる
- Build .NET applications with C#から始めるのではなく、Get started with C#から始めるべきだった説が濃厚
今後の学び方
-
Get started with C#から始める
- Write your first code using C# (Get started with C#, Part 1)
- Create and run simple C# console applications (Get started with C#, Part 2)
- Add logic to C# console applications (Get started with C#, Part 3)
- Work with variable data in C# console applications (Get started with C#, Part 4)
- Create methods in C# console applications (Get started with C#, Part 5)
- Debug C# console applications (Get started with C#, Part 6)
-
C# ガイドを見ればよさそう。LINQの解説もまとめられている。検索してさまようよりもこのガイドを辿って行った方がよさそう。
- なぜこの資料を使うのか?
- https://zenn.dev/inuinu/articles/40d3a9825c19de#まとめ
- にあるようにC#の情報は言ってることが人によって変わるみたい。
- そこで、公式という一つの場所から学ぶことである程度の一貫性が保証される+公式なので情報の信頼度は高いはず
- VSCでのデバッグとかも教えてもらえるみたい。
- 結構体系的に学べそう。
懸念点
- StructureとかClassはあるのか?
- なかったらfreeCodeCampで補う感じで。
そのほか
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は最も制度が低い
- floating-point literalsの中に
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#入門②
Create and run simple C# console applications (Get started with C#, Part 2)
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という
- 関係ないけど関数って単語出てこない・・・オブジェクト指向言語だからかな?関数の代わりにメソッド使ってるのかな
-
パラメーターと引数
- パラメータと引数はよく同じ意味で使用される
- パラメータは、メソッド内で使用されている変数
- 引数は、メソッドが呼び出されたときに渡される値
- パラメータと引数はよく同じ意味で使用される
-
関係ないけど、一般的な入門書と比べて、プログラマーの自立を促してくれるエッセンスを与えてくれてる気がしている。内容自体はいいけど、プログラミング完全初心者向けではない気がした。何かしらのプログラミング経験があった方がいい気がする。
if
, else
, and else if
statements in C#
Add decision logic to your code using -
ようやくifはいった・・・
-
今更だけど、考え方ひとつひとつを丁寧に説明してくれてるの本当によい
-
ブール式とは、ブール値を返す任意の式
-
コード ブロックは中括弧 { } で定義されます。単一の単位として扱う必要があるコード行を集めます。
-
条件式に関するTips
- total > 14より total >= 15の方がbetter
- https://qiita.com/Nossa/items/3fb1f1e4c429cacd3365
- あまり、意識してなかったので意識していきたい
-
if else else if もふつうにつかえる
- else は常に最後に
忙しいので二週間後くらいに再開