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 部分だけだ。
こりゃどっちでも使えるライブラリを作らなきゃ損って気分。
何をやろうとしているかは何となく解るでしょう。