C#の文法はJavaによく似ていますが、波括弧の前で改行するコーディング標準は結構意外でした。 慣れないもんで、以下のサンプルでは一部それに従っていない個所があります。
/*============================*
* 複数行のコメントは
* このように
* 書けます。
*============================*/
// 1行コメントはこのように書けます。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World.");
Console.WriteLine("こんにちは。");
int var1 = 42;
int var2 = 35;
int var3 = var1 + var2;
int var4 = var1 - var2;
// C#にはprintfはない
Console.WriteLine("結果は{0}と{1}", var3, var4);
string msg = "結果は" + var3 + "と" + var4;
Console.WriteLine(msg);
var2 += 18;
var3--;
var4++;
Console.WriteLine("{0} {1} {2}", var2, var3, var4);
// 配列の初期化はJavaと同じ
int[] arr = new int[] {var1, var2, var3, var4};
// foreach文がある
foreach(int v in arr){
if(v >= 50){
Console.WriteLine("{0}は50以上です。", v);
} else if(v >= 40 && v < 50){
Console.WriteLine("{0}は40以上50未満です。", v);
} else {
Console.WriteLine("{0}は50未満です。", v);
}
}
// 普通のfor文もある。配列長はLength
int var5 = 1;
for(int i=0; i<arr.Length; i++){
var5 *= arr[i];
}
// 整形出力。カンマ区切り+小数点以下2桁固定表示
// 書式はString.Format、Console.WriteLine、ToStringで共通に使える
//Console.WriteLine(String.Format("{0:#,0.00}", var5));
Console.WriteLine("{0:#,0.00}", var5);
Console.WriteLine("計算結果:[" + var5.ToString("#,0.00") + "]");
string str1 = "Hello,Power,Shell,World";
Console.WriteLine("文字列の長さは{0}", str1.Length);
// 大文字に変換
Console.WriteLine(str1.ToUpper());
// 配列を分割。引数は文字列ではなく文字なので二重ではなく一重引用符
string[] arr2 = str1.Split(',');
// 配列を表示。C#には配列をダンプする機能はないのでjoinで代用
Console.WriteLine(String.Join(",", arr2));
foreach(string v in arr2){
if(Regex.IsMatch(v, "^.[opqr]")){ // 2文字目がopqrのいずれか
Console.WriteLine("{0}はマッチします。", v);
} else {
Console.WriteLine("{0}はマッチしません。", v);
}
}
// 現在時刻の取得
var d1 = DateTime.Now;
string dstr1 = d1.ToString("yyyy/MM/dd HH:mm:ss");
var d2 = new DateTime(2020, 4, 26, 0, 0, 0, 0);
string dstr2 = d2.ToString("yyyy/MM/dd");
// ヒアドキュメント。PowerShellに似ているけれど少し違う
string s = @"現在時刻は{0}です。
特定の日付とは…{1}です。
";
Console.WriteLine(s, dstr1, dstr2);
}
}