using System; namespace test_cs1 { class MainClass { private static void Seifuku(out string a, out string b) { a = "水色の"; b = "セーラー服"; } public static void Main(string[] args) { string s = "紺色の"; string t = "ブレザー"; Seifuku(out s, out t); Console.WriteLine(s + t); Console.Read(); //閉じないように } } }
なんだ、ref で string を参照渡しがどーのとか以前書いたがこうすればイイんだ。
引数指定の両方に out を付けるだけね、ふんふん。
この方法ならば C/C++ っぽく書ける、無理に C/C++ っぽくする必要は無いと思うけど。
どうしても戻り値に string を使いたくない場合があるのよ。
とにかくコレで IniFile8 C# 版も同様の処理が可能になるな。
常識だったりして…
個人的には yield return 並に衝撃だったんだけど…
C# はまだ始めて三ヶ月なのでまあこんな感じです。
#include <stdio.h> void Seifuku(char *a, char *b) { sprintf_s(a, 256, "%s", "水色の"); sprintf_s(b, 256, "%s", "セーラー服"); } int main(int argc, char* argv[]) { char s[256]; char t[256]; sprintf_s(s, 256, "%s", "紺色の"); sprintf_s(t, 256, "%s", "ブレザー"); Seifuku(s, t); printf("%s%s\n", s, t); getchar(); //閉じないように }
こんなコードに比べたら遙かに解りやすい構文だし。
試しに mono でもやってみたけど普通にコンパイル完了。
なるほど、C# 言語仕様は見事にトレースしているんだ。
つーか
Mono って StreamReader も foreach 文も Windows と全く同様に扱える。
それどころか Generic も同じように問題無く使える。
ココまで再現していると思わなかった、違うのは GUI 部分だけだ。
こりゃどっちでも使えるライブラリを作らなきゃ損って気分。
何をやろうとしているかは何となく解るでしょう。