请问关于c的具体应用场景有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计351个文字,预计阅读时间需要2分钟。
我想创建一个可以处理一个接口的多重其他对象的接口。我尝试在界面中使用界面,并在新类中使用对象。+public interface IObject { double Value { get; set; } }+public class FirstObject : IObject { double Value { get; set; } }+
我想创建一个可以处理一个接口的多个其他对象的接口.我尝试在界面中使用界面并在新类中使用对象.
public interface IObject { double Value { get; set; } } public class FirstObject: IObject { double Value { get; set; } } public class SecondObject: IObject { string Titel { get; set; } double Value { get; set; } } public interface ICollection { IObject[] Values { get; set; } } public class Collection: ICollection { SecondObject[] Values { get; set; } }
现在我收到错误,我的Collection没有实现IObject [] Values成员.
我想当我使用一个对象(SecondObject)从接口IObject实现时,Collection应该处理这个.
我做错了什么,怎么解决这个问题?
使用泛型可能会更好一些:public interface ICollection<T> where T : IObject { T[] Values { get; set; } } public class Collection : ICollection<SecondObject> { public SecondObject[] Values { get; set; } }
它现在不起作用的原因是签名应该完全匹配.这意味着值应该是IObject的数组,而不是.使用泛型可以解决这个问题,同时保持类型约束.
第二个但不可取的解决方案是使用显式接口实现:
public SecondObject[] Values { get; set; } IObject[] ICollection.Values { get { return this.Values; } set { this.Values = value?.Cast<SecondObject>().ToArray(); } }
本文共计351个文字,预计阅读时间需要2分钟。
我想创建一个可以处理一个接口的多重其他对象的接口。我尝试在界面中使用界面,并在新类中使用对象。+public interface IObject { double Value { get; set; } }+public class FirstObject : IObject { double Value { get; set; } }+
我想创建一个可以处理一个接口的多个其他对象的接口.我尝试在界面中使用界面并在新类中使用对象.
public interface IObject { double Value { get; set; } } public class FirstObject: IObject { double Value { get; set; } } public class SecondObject: IObject { string Titel { get; set; } double Value { get; set; } } public interface ICollection { IObject[] Values { get; set; } } public class Collection: ICollection { SecondObject[] Values { get; set; } }
现在我收到错误,我的Collection没有实现IObject [] Values成员.
我想当我使用一个对象(SecondObject)从接口IObject实现时,Collection应该处理这个.
我做错了什么,怎么解决这个问题?
使用泛型可能会更好一些:public interface ICollection<T> where T : IObject { T[] Values { get; set; } } public class Collection : ICollection<SecondObject> { public SecondObject[] Values { get; set; } }
它现在不起作用的原因是签名应该完全匹配.这意味着值应该是IObject的数组,而不是.使用泛型可以解决这个问题,同时保持类型约束.
第二个但不可取的解决方案是使用显式接口实现:
public SecondObject[] Values { get; set; } IObject[] ICollection.Values { get { return this.Values; } set { this.Values = value?.Cast<SecondObject>().ToArray(); } }

