はじめに
C#を書くにあたり、「Swiftでいうと・・・これ?」「なんだ、これは?」と
かなり困惑したので、比較表を作ろうと思いました。
私自身、初心者なので同じ初心者の方々のお役に立てれば嬉しいです
記事の内容に関して、勘違いもあると思いますし、これが全てではありません。
色々な記事を読んで、自らの手をどんどん動かしてみてください!
変数と定数
Swift
//変数
var hoge: String = "Hello"
//定数
let fuga: Int = 810
C#
//変数
string hoge = "Hello";
//定数
const int fuga = 810;
- ポイント
- Sfiftでは型名は後 / C#では型名は前
- C#では文末にセミコロンが必要(初めは忘れがちです)
- 右辺の型が自明である場合はわざわざ型を記載しなくても良いですが、本文では記載しておきます。
型変換(StringとIntで)
Swift
//String → Int
var hoge: String = "114"
var fuga: Int = Int(hoge)!
//Int → String
var hoge: Int = 514
var fuga: String = String(hoge)
C#
//String → Int
string hoge = "114";
int? fuga = int.Parse(hoge);
//Int → String
int hoge = 514;
string fuga = hoge.ToString();
- ポイント
- Swiftは 型(値)
- C#はメソッドを使う(変換する型の組み合わせによっては他のやり方もある)
配列
Swift
//配列の作成
var someInts: [Int] = []
//要素の追加
someInts.append(1)
someInts += [2,3,4,5]
print(someInts) //[1,2,3,4,5]
C#
//要素数が可変なリストの作成
List<int> someInts = new List<int>();
//要素の追加
someInts.add(1);
//これがC#の配列宣言
int[] addInts = new int[] {2,3,4,5};
someInts.AddRange(addInts);
Console.WriteLine(someInts); //[1,2,3,4,5]
- ポイント
- Swiftの配列は要素数が可変
- C#の配列は要素数が固定(Listは可変)
for文
Swift
//昇順処理なのでC#みたいに色々と書かなくてもよい
for i in 1...5 {
print(i) //1,2,3,4,5
}
C#
//カッコ内で色々と書く
//iの開始値は1,iは5まで繰り返す,iはfor文の処理を終えるごとに+1する
for(int i = 1; i <= 5; i++)
{
Console.WriteLine(i); //1,2,3,4,5
}
- ポイント
- Swiftのfor-in文は昇順処理をしてくれるため、簡潔に記載できる(Swift3.x~)
- C#はforのカッコ内で色々と書く必要がある
- map,foreachなど色々ありますが、今回は最も基本的なもので比較しています。
if文
Swift
var num: Int = 5
//カッコなしで書ける
if num == 5 {
print("5だよ")
} else {
print("5じゃないよ")
}
// 5だよ
C#
int num = 5;
//カッコがいる
if(num == 3)
{
Console.WriteLine("3だよ");
}
else
{
Console.WriteLine("3じゃないよ");
}
//3じゃないよ
- ポイント
- 書き方はそんなに違いなし!?
関数
Swift
//func 関数名(ラベル 引数名: 型) -> 戻り値の型
func plusWithNum(_ num1: Int, _ num2: Int) -> Int{
return num1 + num2
}
//ラベルにアンスコを書くことでラベルなしで呼べる
plusWithNum(1,5)
//6
//ちょっと余談
//func 関数名(ラベル省略 引数名: 型) -> 戻り値の型
func plusWithNum(num1: Int, num2: Int) -> Int{
return num1 + num2
}
//引数名がラベルになるが、呼び出すときに記述する必要あり
plusWithNum(num1: 1, num2: 5)
//6
C#
//戻り値の型 関数名(型 引数名)
int plusWithNum(int num1, int num2)
{
return num1 + num2;
}
//普通に引数の型と同じものを入れたらよい
plusWithNum(1,5)
//6
//追記
// 名前付き引数での呼び出し
PlusWithNum(num1: 1, num2: 5);
// 名前付き引数の場合, 順番を前後させても問題ない
PlusWithNum(num2: 5, num1: 1);
- ポイント
- Swiftは「->」の後が戻り値の型で関数を使用するときに引数にはラベルが必要
- C#は関数名の前が戻り値の型で素直に引数を入れたらよい
- C#もSwiftのように引数名を書いて呼び出せるようです(@Midoliy さん、ありがとうございます!)
さいごに
ざっくりと基本文法の比較を書いてみました。
これはほんの一部に過ぎません(氷山の一角ですらない)
どんどん検索をして知識を深めていきましょう(私も頑張ります)
この記事が最初の1歩を踏み出す助けになれたら幸いです。
今後はSwiftのことを中心に記事を書いていこうと思うので、よろしくお願いします