接口/ID可使用对象初始值设定项和属性
本文关键字:属性 ID 可使用 对象 接口 | 更新日期: 2023-09-27 18:32:56
作为在如何构建类或函数/方法(或接口(中回答的问题的后续,以便作为使用的一部分,我可以在{}括号中传递值?,
如何将对象初始值设定项和属性与接口结构结合使用:
public class SomeClassHelper : ISomeClassHelper
{
}
public class SomeClass: IDisposable
{
public SomeClass(object somevalue) {
}
public int AnotherValue { get; set; }
public int AdditionalValue { get; set; }
internal void ImHere() {
throw new NotImplementedException();
}
public void Dispose() {
throw new NotImplementedException();
}
}
static void Main(string[] args) {
object somevalue = null;
using (var something = new SomeClass(somevalue) { AnotherValue = 1, AdditionalValue = 2 }) {
something.ImHere();
}
}
我将如何使用上述内容才能拥有界面,还是界面的目的破坏了上述内容?
我认为您可能误解了接口的目的。
从 https://msdn.microsoft.com/en-us/library/ms173156.aspx:
接口接口包含类或结构可以实现的一组相关功能的定义。 例如,通过使用接口,可以在类中包含来自多个源的行为。该功能在 C# 中很重要,因为该语言不支持类的多重继承。此外,如果要模拟结构的继承,则必须使用接口,因为它们实际上不能从另一个结构或类继承。
是强制实现它的任何类满足某些条件,以便其他代码可以依赖于该类,该类与实现相同接口的任何其他类具有某些共性。
所以在你的另一个问题中,人们已经回答建议,如果你想使用using
块,你的类需要实现IDisposable
接口。这是因为,要使using
工作,它需要知道它正在使用的类将具有一种称为 Dispose()
的方法,该方法可以释放该类正在使用的任何非托管资源。
如果您的SomeClass
没有任何非托管资源,则明智的做法是重新审视您正在尝试执行的操作。当托管对象(如类的实例(停止使用时,垃圾回收器将自动释放它们(我在这里概括一下(。
这确实应该在你的另一个问题上得到回答,但你可能想要探索做的(而不是使用初始值设定项(是为你的类创建一个构造函数,并在实例化你的类时使用它。
你最终会得到如下结果:
public class SomeClass: IDisposable
{
public SomeClass(object somevalue, int anotherValue, int additionalValue)
{
AnotherValue = anotherValue;
AdditionalValue = additionalValue;
}
public int AnotherValue { get; set; }
public int AdditionalValue { get; set; }
internal void ImHere()
{
throw new NotImplementedException();
}
public void Dispose()
{
throw new NotImplementedException();
}
}
static void Main(string[] args)
{
object somevalue = null;
using (var something = new SomeClass(somevalue, 1, 2))
{
something.ImHere();
}
}
您可以在 https://msdn.microsoft.com/en-us/library/ms173115.aspx 阅读有关使用构造函数的更多信息。