私はモノ2.8.1に移植すると予想外の結果に遭遇しました。 MCSで上記のコードの問題サンプルプログラムを煮詰めすることができます(私は以下に引用されるファイルにいくつかのクラスと〜コードの1000行をカットした後、さらにそれを軽減することができませんでした)Mono + named/optional parameters =コンパイラのバグ?
public class Person
{
public Person(int age, string name = null){}
public Person(double income, string name = null){}
public Person(double income, int age, string name = null){}
}
class Program
{
static void Main()
{
Person p = new Person(1.0, name: "John Doe");
}
}
コンパイル出力を提供します「ジョン・ドウ」)、または新しい人(:名前付き/オプションパラメータ(すなわち呼び出して新しい人(1.0、ヌル、「ジョン・ドウ」)か、新しい人(1.0、ヌル、名前の使用を削除する
test.cs(22,24): error CS0584: Internal compiler error: Internal error
test.cs(22,20): error CS0266: Cannot implicitly convert type `object' to `NamedParams.Person'.
An explicit conversion exists (are you missing a cast?)
Compilation failed: 2 error(s), 0 warnings
1.0、 "John Doe"))は完璧なコンパイルにつながります。また、VS2010では、ファイル(と私が始めた全体のソリューション)はうまくコンパイルされます。キャスティングでエラーCS0266が削除されますが、CS0584は削除されません。
私の質問:何か間違っている、つまりmcs(すなわちmcsのバグが私には分かります。それ以外に何か内部的なエラーがありますが、そういうプログラムはコンパイルできません)またはVS2010のMicrosoftコンパイラは、コンパイルするようなコードを許可すべきではありませんか?
私はそれが間違っている(正しいコンストラクタを推測することはできません)と思っていますが、おそらくそれはそうではなく、私はよく分かりませんか?
PS。 GoogleとNovellのBugzillaの両方でこのような既知のバグを探してみましたが、関連するものは何も見つかりませんでした。再び、私は目が見えないかもしれません;)
文字列をnullに設定することもできますか... – Blam
Visual Studioを使用してこれをコンパイルする際にエラーが発生していません。私は確かめるためにそこにそれを試してモノを持っていない。 –
@Courtney:Monoはオンラインで入手できます[こちら](http://ideone.com/kZ2Eo)。 – Vlad