私は多少C#の新機能を持っていますが、私が書いた非常に小さくてシンプルでトランスペアレントなプログラムに属するコンパイルの結果に困惑しています。コード:コメントでの行に関連する(トリビアル?)C#名前空間/クラス階層問題
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hemtenta_problem_1
{
public class Basklass
{
public virtual void SkrivTrams()
{
Console.WriteLine("Hej Hopp");
}
}
public class Avledd_klass : Basklass
{
public override void SkrivTrams()
{
Console.WriteLine("Hej Hå");
}
}
public class Avledd_klass_till : Avledd_klass
{
public new virtual void SkrivTrams()
{
Console.WriteLine("Tjo Hej");
}
}
public class Ytterligare_avledd_klass : Avledd_klass
{
}_ //row which gives compiler message
class Program
{
static void Main(string[] args)
{
}
}
}
コンパイラのメッセージは、名前空間が直接さて、このようなフィールドやメソッドなど メンバー
を含めることはできません
あり、Iどんな分野や方法も "オープンに"置くことができないことを完全に理解しています。クラスの一部である必要があります。しかし、それは私がコーディングしているフィールドまたはメソッドではなく、それはそのクラスのクラスです。コードの上の他のクラスは、この問題をもたらしませんでした。それは私が最後の、そしてまだ空のクラスを書いたときに始まりました。
Visual Studioのコンパイラは正常に動作していますか?それとも私が見ていない40の奇妙な線で何ですか?参考にできるコメントにはとても感謝しています。
エラーが発生した行のアンダースコアは何ですか? –
私はあなたの正確なコードを試して、それは私のために働く。 (Ytterligare_avledd_klassクラスの最後にアンダースコアを表示)編集:YEahのアンダースコアが問題です! – anothershrubery
一般的にコードにアンダースコアが多すぎます。 [.NET Frameworkの命名ガイドライン](http://msdn.microsoft.com/en-us/library/4xhs4564.aspx)では、アンダースコアを使用するのではなく、パスカルケーシングのクラス名とメソッド名を推奨しています。あなたの命名スタイルを変えれば、それらの迷いの下線を埋めるのを助けるはずです。 –