謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

今更に構文覚え直し

いつものように間違い、嘘、勘違いが含まれるただのメモ書き。ここは俺の日記帳。
文章メタメタ前後関係ぼろぼろそれが俺クオ。

C#の"goto case"文とか初めて知りますた。
#D言語Javaと違ってimplimentsとexpandsは区別しないんだけど分かれてた方が良いかなぁと思ってた。けどinterfaceが全てのメソッドにabstractを付けるだけと知ってD言語で区別しない意味が分かった感じ。
#Java
#label:{
# break label;
#}
#のような構文がD言語でも欲しい所。{}内だけでもbreakしたいなぁ…。
一つ気になったのはなんでJavaとかC#って最初に動作するメソッドのあるクラスに


class Start{
static int Main(char[] args){

}
}

みたいのを派生して使わないのか。
まぁC#はmix-inや多重継承が無いからにしてもJavaはなんでだろう…(staticもたしか継承できたはず…)
#因みにD言語ではextern(C) mainが一番最初に呼ばれるという(C言語では)当り前の動作です。その関数でextern(D) main(_Dmain)を呼び出します。
C#Javaを比べるとJavaの方がカプセル化をしっかりしてるという印象。(あくまで印象のみ)
C#側はsetterとgetterがあるからあまり気にする必要がないんだろうけど。
#D言語ではシンタックスシュガーで
#class Test{
# private int val;
# int value(){
# return val;
# }
# void value(int val){
# this.val=val;
# }
#}
#int main(){
# Test test=new Test;test.value=12;writef("%s",test.value);
#}
#と書けたりする(スクリプト言語っぽい感じ)。メソッドなのにプロパティみたいな名前でJava使いにとってはキモいだろうけど。
多元配列はJavaよりもC#のような構文が好み。
#D言語は配列の配列しかサポートしていない(オブジェクトモデルとGCの関係からかな)。でもD言語の配列スライスや配列の連結演算子は中毒物。
# C#ではArrayを派生することによって配列インターフェースをサポートできるがD言語ではopCatAssign、opCat、opIndex、opIndexAssign、opSlice等を使う。(当然派生元クラスを作って継承することもできる。)
C#にinterfaceあったのを今更知った。
package(Java)やmodule(D言語)やnamespace(C#)の概念に付いての考えは保留。
#using xx=org.namespace;はD言語のalias org.module xx;と同等と。D言語のaliasは強力すぎていいんだか悪いんだか。
C#マルチキャストデリゲートもきもい…と思うのはD言語の連結演算子になれたからか? まぁ値が一意に決められているので簡単に取り除ける(-=)のは魅力的だけれども、せめて値が一意だという意味の配列の修飾子にしてくれよ…と思ったり。C#って関数配列作れないんだっけか?
C#の属性は…ちょっと使いどころが思い浮かばない…(ネイティブなDLLを呼ぶのに使うんだっけか? mix-inの代わり? D言語で言う所のextern(C)等の代わり?)
C#のfixed文はD言語のvolatile文の制限版と。