2

这是我今天在编码中看到的一些奇怪的东西。

这是示例代码:

public class SomeClass
{
   public IUtils UtilitiesProperty { get; set; }
}

public interface IUtils
{
   void DoSomething();
}

public class Utils : IUtils
{
   void DoSomething();
}

这编译得很好。

那么什么是 UtilitiesProperty?它是实用程序吗?如果不止一个类实现了 IUTil 怎么办?那么编译会失败吗?

4

2 回答 2

13

在您给它一个(或者更确切地说,它具有 value )之前,它没有任何价值null。如果你给它分配一个Utils引用,那么是的:它是 a Utils,通过IUtils接口公开。你只能给它null或实现的东西IUtils

于 2009-11-04T23:41:54.050 回答
5

它是一个属性,可以保存实现您的 IUtils 接口的对象。更多的类可以实现这个接口,并且使用该接口可以让您获得一定程度的抽象(只要类遵守接口契约,消费者就不会关心)。

我建议您阅读接口、抽象类等的使用。

例如MSDN 文档

于 2009-11-04T23:41:55.843 回答