c# - 通过引用?

标签 c# .net

我仍然对通过 ref 感​​到困惑。

如果我有一个 Cache 对象,我希望它被多个对象访问/可用,我使用构造函数注入(inject)来注入(inject)它。我希望它影响我创建的单个缓存对象。例如。

public class Cache {

   public void Remove(string fileToRemove) {
      ...
   }
}

public class ObjectLoader {

   private Cache _Cache;

   public ObjectLoader(Cache cache) {

   }

   public RemoveFromCacheFIleThatHasBeenDeletedOrSimilarOperation(string filename) {
      _Cache.Remove(fileName);
   }
}

当我将缓存传递给 ObjectLoader 构造函数时,我应该使用 ref 吗?

最佳答案

不,在这种情况下您不需要使用 ref 关键字。

缓存是一个类,它是一个引用类型。将引用传递给方法时,引用的副本(不是对象本身)将放入您的参数中。方法的内部和外部引用都指向堆上的同一个对象,并且使用一个对象字段的修改将反射(reflect)在另一个对象中。

将 ref 添加到您的方法调用中会传入原始引用。这在您要重新分配(即通过调用 new)调用方法中引用指向的位置的情况下很有用。

关于c# - 通过引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151860/

相关文章:

c# - ASP.NET MVC 中的约定优于配置

c# - Azure AD B2C - URL 错误

c# - 如何在不等待的情况下在 Singleton 中执行昂贵的操作?

javascript - 如何将 JavaScript 打包为 .NET Internet Explorer 9 插件?

c# - 如何在 Property.Settings.Default 中存储图像?

.net - 在 XP 中安装 .Net 4 之前的 VS 2010 BootStrapper for WIC(Windows Imaging Component)

c# - GODOT - C# 引用当前节点

c# - EntityFramework Any 生成两条 EXISTS sql 语句

c# - NHibernate:为查询参数显式设置数据类型和长度

c# - .WPF 应用程序生成 <appname>.dll.config 而不是 <appname>.exe.config