这实际上是一个一般性问题,但现在我正在使用 Go 和 C# 时出现了。 假设我们想根据用户在 Go 中的输入分配一个变量:
func main() {
var input float64
fmt.Scan(&input)
}
很清楚为什么我们需要一个内存位置来放入我们的新值。但是为什么在 Java 或 C# 等语言中,我们没有遵循相同的逻辑:
var input = Convert.ToInt32(Console.ReadLine());
// and not &input ...
最佳答案
Java 和 C# 是高级语言,它们抽象了大部分内存管理和 C 等低级语言所需的其他特定内容。
在这种情况下,Console.ReadLine()
函数分配内存来存储控制台输入并将其复制到 input
变量。
因为这些语言有垃圾收集,分配和释放内存是自动完成的,所以框架不需要你显式地传递一个内存地址来写入,也不期望你在完成后释放内存使用它。
编辑:
请参阅@kostix 评论以获得对此答案的重大改进。
关于c# - 为什么我们需要指针来为 Go/C 中的变量赋值而不是 C#/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517179/