2012/08/19
C#.NETで覚えたことJavaと比較しつつ忘備録
Webアクセス
とても簡単。System.Net.WebClientを使うだけ。jakartaのHttpClient相当。XMLとXPath
System.Xmlに一通りそろっている。http://msdn.microsoft.com/ja-jp/library/gg145036 クラス名の頭にXmlが付くのがウザイかも。
その他は普通にDOMな感じ。 名前空間付きのXPath処理でちゃんとリゾラバ用意しないといけない。
JavaだとlocalNameだけでも許容してくれたんだが。
using System.Xml; static getODataProperty(url) { string xml = getWebData(url); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xml); XmlNamespaceManager resolver = new XmlNamespaceManager(xmlDocument.NameTable); resolver.AddNamespace("ns", "http://www.w3.org/2005/Atom"); resolver.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"); resolver.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices"); XmlNodeList nodeList = xmlDocument.SelectNodes("/ns:entry/ns:content/m:properties/d:Name", resolver); if (nodeList.Count == 0) return null; return nodeList[0].InnerText; }
文字列定数
最初なんじゃこれ?と思った @ 付きの文字列定数。here string と言うらしい。 「\」や改行をそのまま文字列内に書ける。 使ってみると便利。Javaにも欲しいかも。Javaでも正規表現を書くときに欲しいのでJDK1.8で取り入れてくれないだろうか。
App.config
単純にシステムプロパティなんだけど外部ファイルになっていてファイル名の決まりがあるのは便利。Javaの場合、アプリ毎にプロパティファイルが違うので標準化してもいいと思うんだが。
正規表現
System.Text.RegularExpressions.Regexから普通に使える。JavaのStringに直接正規表現を使えるのは最初どうかと思ったのだがこう見ると便利だね。
setter/getter
JavaのBeanはpublicフィールドでいいじゃね?と常々思っていたので プロパティの考え方は有りだとは思うのだが代入演算で副作用が発生するのは 発見困難なバグを作り出しそうで気持ち悪い。 設計の問題で言語仕様上はできても良いとは思うのだが必ずやるやつがいるんだよね。 まあ演算子のオーバライド全般に言えるんだけど。初期化でthisが使えない
クラスフィールドの初期化でthisが参照できないのは不便すぎる何とかしてくれ。雑感
似てるようでいて思想の違いを感じるねJavaとC#って。どっちが良いっていうのは無くて慣れてるほう使えばって感じかな。
でも、名前の1文字目が大文字は気持ち悪いよ!
この投稿へのコメント
コメント・フォーム