在 solidity 中,大多数智能合约将外部合约调用转换为接口(interface)(IERC20 与 ERC20)。两者在类型转换上有什么区别吗?
例如,如果我写
IERC20 Token = IERC20(tokenContractAddress);
有什么功能上的区别吗
ERC20 Token = ERC20(tokenContractAddress);
?
只是想知道在 gas 成本、兼容性问题等方面是否有需要考虑的因素。谢谢!
最佳答案
如果您只想访问这些功能,您可以使用其中任何一个。但是在接口(interface)中你不能有状态变量,所以如果你需要一些状态变量,你可以转换为契约。
此外,接口(interface)不能继承其他契约或接口(interface)。也许契约(Contract)是从 contractB 继承的,并且在您的契约(Contract)中您想访问 contractB。
关于interface - 强制转换为接口(interface)和契约(Contract)实例之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71041850/