我创建了这个界面:
public interface IPhrase
{
int CategoryId { get; set; }
string PhraseId { get; set; }
string English { get; set; }
string Romaji { get; set; }
string Kana { get; set; }
string Kanji { get; set; }
}
和这个类:
public class Phrase : IPhrase
{
public Phrase()
{
}
public int CategoryId { get; set; }
public string PhraseId { get; set; }
public string English { get; set; }
public string Romaji { get; set; }
public string Kana { get; set; }
public string Kanji { get; set; }
}
这段代码返回数据并将其类型转换为 Phrase:
var phrases = db2.Query<Phrase>("SELECT * FROM Phrase", ans);
var phrases = db2.Query<IPhrase>("SELECT * FROM Phrase", ans);
我想知道的是,我在这里使用IPhrase
或Phrase
是否有任何区别/优势?另外,我在这个例子中创建一个 IPhrase
接口(interface)有什么好处(如果有的话)。这会导致代码更具可读性吗?
最佳答案
接口(interface)是保证的契约,任何实现接口(interface)的类都将实现接口(interface)中定义的方法和属性。这允许您使用该接口(interface)创建方法、列表等,它们接受任何实现该接口(interface)的类,例如
public interface IExample
{
int GetInt();
}
public void ProcessInt(IExample value)
{
var tempInt = value.GetInt();
// Do processing here
}
这允许将实现接口(interface) IExample 的任何具体类传递给此方法。该方法确保传递的任何具体类都将实现 GetInt 方法。
关于c# - 当我键入对象时,使用接口(interface)还是类有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40176007/