2

私はC#でWPFアプリケーションをたくさん遊んでいますが、よくわからないことがたくさんあります.私の第二言語であり、専門用語もプログラミングもまだそれほど得意ではありません...

1:メインクラスの「これ」とは?XAML で新しい WPF アプリケーションを作成すると、ウィンドウとグリッドが表示されます。ただし、私は XAML が大嫌いで、必要なすべての要素とオブジェクトのコードを記述するのが好きなので、最初のグリッドを削除し、クラスを作成し、グリッドを定義して追加するには、次のようなものを作成する必要があります。

   this.AddChild(myGrid);

これは問題ありませんが、メイン クラスの「this」を他のクラスで使用したい場合は、少し複雑になります。では、どの UIElement または Object が「これ」でしょうか? メソッドで使用できるように定義するにはどうすればよいですか? 「これ」とは、最初に作成した Window のことを指していると思いますが、その Window はどの UIElement や Object でしょうか。

2:延長授業?? 私は最近、プログラミングについてもっと学ぶために、多くの Java チュートリアルを見てきました。そこで、他のクラスのオブジェクトを使用するには、次のように書くだけです:

   public class class1 extends class2{}

すべてが完璧です。メイン クラスは :Window を拡張するため、メイン クラスでない限り、C# WPF で同じことを模倣できることがわかりました。部分クラスとして定義されているためだと思います...「拡張する方法はありますか?」 "複数のクラスまたはこれを回避しますか?

これを解決するための助けは素晴らしいでしょう:)

4

4 に答える 4

2

「これ」とその ID に関する部分では、Windowはクラスの階層に位置し、その先祖の ID を引き受けることができます。例えば...

    public MainWindow()
    {
        InitializeComponent();
        var contentControl = this as ContentControl;
        var control = this as Control;
        var frameworkElement = this as FrameworkElement;
        var uiElement = this as UIElement;
        var dependencyObject = this as DependencyObject;
        var dispatcher = this as DispatcherObject;
    }

...このスニペットの割り当てはすべて合法です。また、次のようなよりエキゾチックな割り当てがあります。

var x = this as IInputElement;

ここで重要なのは、フレームワークと、各クラスで利用できるさまざまな割り当てを調べることです。他の人が指摘しているように、オフラインで読むことは、素早い学習曲線にとって不可欠です.

オブジェクト指向コンテキストのキーワードとしての「this」の語源は、C++ の初期の仕様に最初に登場した 1970 年代後半までさかのぼります。

最後に、Xaml は多くの理由で WPF の最も魅力的な機能の 1 つです。Xaml があなたのアプローチと互換性がない場合は、WinForms や Swing、または同様の緊密にバインドされたフレームワークを使用する方がよいかもしれません。

于 2013-07-30T12:31:49.343 に答える
2

C# でオブジェクト指向プログラミングを学ぶ必要があります。

  1. thisクラスの現在のインスタンスを意味します。したがって、各クラスthisでは異なるオブジェクトを参照します。this通常は省略でき、AddChild(myGrid)そのまま使用できます。
  2. extends(または:C# では) は、最初のクラス ( class1) が 2 番目の ( ) から継承されるため、 で定義されていてマークされていないclass2メソッドと変数にアクセスできることを意味します。class2private
于 2013-07-30T11:26:30.430 に答える
1

簡単に言えばthis、あなたがいるクラスです。

例として

class dim
{
    int sum = 0;
    public void num(int sum){
        this.sum = sum; //Places the sum from num to the sum in dim
    }
}
于 2013-07-30T11:28:01.683 に答える
1

クラスを拡張することは、基本的にオブジェクト指向プログラミングでは継承と呼ばれます。継承には、単一、複数、複数レベル、階層、ハイブリッドなど、いくつかの種類があります。しかし、C# と Java は、複数のクラスからの継承をサポートしていません。

多重継承に代わる機能は、インターフェイスの使用です。「クラスから拡張する」のではなく、キーワード「implements」を使用して「インターフェイスを実装」します。インターフェイスは、メソッド シグネチャを宣言する単なるスケルトン クラスであり、インターフェイスは「インターフェイスを実装する」クラスに実装されます。重要な点は、複数のインターフェースを実装できることです

継承とインターフェイスの概要を取得するには、次のリンクが役立ちます。

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

于 2013-08-02T03:51:40.203 に答える