public class PhotoList : ObservableCollection<ImageFile>
{
public PhotoList() { }
**//this is the line that I dont recognise!!!!!!!!!!**
public PhotoList(string path) : this(new DirectoryInfo(path)) { }
public PhotoList(DirectoryInfo directory)
{
_directory = directory;
Update();
}
public string Path
{
set
{
_directory = new DirectoryInfo(value);
Update();
}
get { return _directory.FullName; }
}
public DirectoryInfo Directory
{
set
{
_directory = value;
Update();
}
get { return _directory; }
}
private void Update()
{
foreach (FileInfo f in _directory.GetFiles("*.jpg"))
{
Add(new ImageFile(f.FullName));
}
}
DirectoryInfo _directory;
}
3
A
答えて
19
これは連鎖コンストラクタと呼ばれる - コンストラクタは(ベースコンストラクタのための兄弟コンストラクタ用this
とbase
を使用して)この構文と同じタイプ内の他のコンストラクタを呼び出すことができます。ここで
は、それがどのように動作するかを示す簡単な例です:
using System;
class Program
{
static void Main()
{
Foo foo = new Foo();
}
}
class Foo
{
public Foo() : this("hello")
{
Console.WriteLine("world");
}
public Foo(String s)
{
Console.WriteLine(s);
}
}
出力:
hello
world
1
これは、文字列を取るコンストラクタを作りますパラメータは新しいDirectoryInfoオブジェクト(パラメータとして文字列を使用しています)を渡して、DirectoryInfoパラメータを受け取るコンストラクタです。
私はしばしば、複雑なクラスに簡単なコンストラクタを提供するために、この方法を使用して、クラス自体がintitallizationコードを複製せずにデフォルト値でプロパティを初期化できるようにします。
2
これは、引数としてDirectoryInfoを取るクラス内の別のコンストラクタを呼び出します。
は、このクラスの呼び出し元がどちらかの前にこれを見たことがない
//The empty ctor()
PhotoList list = new PhotoList();
//The ctor that takes a DirectoryInfo
PhotoList list2 = new PhotoList(new DirectoryInfo("directory"));
//Would do the same as the code above since this constructor calls another constructor via the this() keyword
PhotoList list3 = new PhotoList("directory");
関連する問題
- 1. 継承を持つコンストラクタでのリフレクション(Java)
- 2. パラメータを持つコンストラクタを使用した基本クラスからの継承
- 3. コンストラクタでパラメータをとる基本クラスの継承シングルトンクラスですか?
- 4. C++の基本クラスからコンストラクタとしてコピー/移動コンストラクタを継承
- 5. UML - クラス継承、あなたは何を継承しますか?
- 6. メンバー関数を持たない構造体の継承
- 7. E言語は多重継承をサポートしていますか?私は、そのような何か他の複数の構造体から継承する新しい構造体を構築したいと思い
- 8. 複数レベルの継承とC++の呼び出し基本コンストラクタ
- 9. コンストラクタを継承しますか?
- 10. Rational(またはコンストラクタを持たない任意のクラス)からどのように継承できますか?
- 11. ルビーの継承構文 - 基本クラスに引数を渡す
- 12. 継承を持つコンストラクタが必要ですか?
- 13. 構造体とクラスと継承(C++)
- 14. は、私はそうのような構造体を持つ構造体
- 15. 継承クラスのジェネリックとコンストラクタ
- 16. スカラのコンストラクタ、ロジックと継承
- 17. Javaの継承とコンストラクタ
- 18. Javaコピーのコンストラクタと継承
- 19. コンストラクタのパラメータと継承
- 20. 継承と複数のコンストラクタ
- 21. スーパークラスの継承とコンストラクタ
- 22. 流暢な構文と継承
- 23. のJava:継承コンストラクタ
- 24. C++の継承構文
- 25. 基本クラスから継承するものは何ですか?
- 26. Java継承/コンストラクタ
- 27. いくつかの混乱が、私は次のコードを持つコンストラクタの呼び出しと継承
- 28. VBA継承による構築、コンストラクタが機能していないか?
- 29. 基底クラスを継承するコンストラクタを持つ2つのabstactクラス
- 30. 構造体コンストラクタ構文
を使用する方法を見てみましょう。呼び出し元のコードでチェーンされたコンストラクタが表示されないため、最初はデザインの選択肢が貧弱に思えるでしょうか?間違っている可能性があります –
@Nick Allen連鎖はクラスの内部(実装)の問題とみなされるため、呼び出し側は知ってはいけません。例えば、共有のプライベートコンストラクタに連鎖する2つのパブリックコンストラクタを持つことができます – krosenvold