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;
}
bert
问问题
358 次
3 回答
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
于 2009-05-16T12:23:58.143 回答
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");
于 2009-05-16T12:28:00.973 回答
1
它使接受字符串参数的构造函数调用接受 DirectoryInfo 参数的构造函数,将一个新的 DirectoryInfo 对象(该对象反过来使用字符串作为参数)传递给它。
我经常使用这种方法为复杂的类提供更简单的构造函数,让类本身用默认值初始化属性,而不必重复初始化代码。
于 2009-05-16T12:24:39.560 回答