我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?
我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.
如果你这样做是这样的:
IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)
你可以使用任何实现的类IInterface
吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface
.我想不出你需要多久做一次.
另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?
我在网上阅读随机主题时遇到了鸭子打字这个术语,并没有完全理解它.
什么是"鸭子打字"?
可能重复:
我如何知道何时创建界面?
我想知道使用接口的意义.
你使用Interfaces吗?如果是这样,您何时决定使用它们,何时决定不使用它们?
我现在已经为我的服务层和我的存储库层定义了接口,但我想知道我是否错过了其他有用的地方.
我想我只是不完全明白他们的目的.
我正在处理Kattis 问题,在这里我应该以前缀表示法接受输入,将其简化并以前缀表示法返回它。这些是输入和输出的示例:
Sample Input 1 Sample Output 1
+ 3 4 Case 1: 7
- x x Case 2: - x x
* - 6 + x -6 - - 9 6 * 0 c Case 3: * - 6 + x -6 - 3 * 0 c
Run Code Online (Sandbox Code Playgroud)
我已经编写了这段代码,并且如果使用这种输入数据运行它,我将获得与上述完全相同的输出。但是,我从Kattis那里得到了错误的答案。
我在这里做错了什么?由于没有任何调试提示,这令人沮丧。
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const operators = ['+', '-', '*', '/'];
const operatorsFunctions = {
'+': (a, b) => a …
Run Code Online (Sandbox Code Playgroud) 我知道我们无法创建实例Interface
.但为什么我们可以写Interface
在左边?那些仅仅是Interface的引用(对于实现这个的类)是实例吗?
如果我们无法创建Interface实例,那么P
这个例子中的类型是什么?
string[] names = {"John", "Bob", "Mark"};
IEnumerable<string> P = names.Where(n => n.Contains('o'));
Run Code Online (Sandbox Code Playgroud) 使用services.AddSingleton<SomeService, SomeServiceImplementation>()
而不是有services.AddSingleton<SomeServiceImplementation>()
什么好处?
例如我有一个示例界面
interface ISampleInterface
{
void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
和一个样本类:
class SampleClass : ISampleInterface
{
public void DoSomething()
{
console.write("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
不,我做 services.AddSingleton<SampleClass>()
为什么或何时使用services.AddSingleton<ISampleInterface, SampleClass>()
?
谢谢你的帮助!:-)
oop ×4
interface ×3
c# ×2
asp.net-core ×1
blazor ×1
class-design ×1
coupling ×1
duck-typing ×1
javascript ×1
kattis ×1
object ×1
php ×1
theory ×1