9

最近C#を学び始めましたが、C++のバックグラウンドがあります。どうしたらいいのかしら

class employee
{
    public:
       ....
  ... methods ...
       ....

    private:
       ....
    ... private member variables ....
       ....
}

これをC#で試してみましたが、「public:...」と「private:...」の後にすべてをパブリックまたはプライベートにするのは好きではありません。

また、C#にはこのgetおよびsetが存在することを確認したので、プライベートメンバー変数を作成し、その変数を返す関数を作成する方法を実行する必要はありませんか?

私がそれに取り組んでいる間、C#でサブクラスを作成するにはどうすればよいですか?C#では、新しいクラスがさまざまなタブで開かれるため、どのように行うかについて混乱しています。

4

4 に答える 4

18

C ++のようにC#で「ブロック」をパブリックまたはプライベートにすることはできません。各メンバーに可視性(および実装)を追加する必要があります。C ++では、通常はそうします。

public:
  memberA();
  memberB();
private:
  memberC();

...そしてメンバーを他の場所に実装しますが、C#では実行する必要があります。

public  memberA() { ...implement your function here... }
public  memberB() { ...implement your function here... }
private memberC() { ...implement your function here... }

プロパティについては、自動実装されたものsetget、自分で実装するかコンパイラに実装させるかを選択できるメソッドと見なしてください。それらを自分で実装する場合でも、データを格納するためのフィールドが必要です。コンパイラに任せると、フィールドも生成されます。

継承は、同じファイルに物を入れた場合とまったく同じように機能します(これは、より大きなC ++プロジェクトではおそらく良い考えではありません)。同じ名前空間にいる場合、または基本クラスの名前空間がインポートされている限り、通常どおり継承するだけで、シームレスに継承できます。

using System.Collections;  // Where IEnumerable is defined

public class MyEnumerable : IEnumerable {  // Just inherit like it 
   ...                                     // was in the same file.
}
于 2012-09-07T05:25:17.573 に答える
4

1)C#のアクセス修飾子は、クラスメンバーごとに1つを明示的に指定する必要があるという点でC++とは異なります。

http://msdn.microsoft.com/en-us/library/wxh6fsc7(v=vs.71).aspx

2)あなたが言及しているget、setは、C#プロパティを参照してください。

class User
{
    private string userName;

    public string UserName
    {
        get { return this.userName; }
        set { this.userName = value; }
    }
}

plsは、自動実装されたプロパティも使用できることに注意してくださいhttp://msdn.microsoft.com/en-us/library/bb384054.aspx

3)C#でのサブクラス化は次のように行われます

class Manager : Employee 
{
    //implementation goes here as usual
}
于 2012-09-07T05:39:39.830 に答える
3
  1. いいえ、できません。C#では、メンバーごとにアクセサーを指定する必要があります。

  2. いいえ、そうではありません、それは呼ばれていますProperty

  3. 他のクラスに書いてください

class SomeClass
{

}
class SubClass:SomeClass {}
于 2012-09-07T05:21:40.627 に答える
3

C#では、メソッドまたはプロパティごとにアクセス指定子を指定する必要があります。指定しない場合は、デフォルトのアクセス指定子を使用します。
クラスメンバーのデフォルトのアクセス指定子はプライベートであり、クラス外のもののデフォルトは内部です

class MyClass{ //MyClass will be internal
     int MyProperty {get; set;} // MyProperty will be privare
}
于 2012-09-07T05:30:15.583 に答える