【问题标题】:How to use ref variable outside calling method in c#如何在c#中调用方法外使用ref变量
【发布时间】:2020-11-29 12:17:28
【问题描述】:

如何在 C# 的调用方法之外使用 ref 变量。

我会解释我想要实现的目标。

我在一个类(MyClass)中有一个方法,看起来像

private MyObject myobj;
public ref MyObject GetMyObject()
{
    return ref myobj;
}

现在我正在从不同类(FetchClass)的另一个方法中获取变量

private MyObject fetchObj;
void Start()
{
    fetchObj = ref MyClass.instance.GetMyObject(); //getting error here
}

我喜欢在同一个类的不同方法中使用 fetchObj。这就是我在外面宣布的原因。 但我在 Start 方法中遇到错误。

【问题讨论】:

  • 是否有任何模式可以实现类似的用例?我不想每次都调用 GetMyObject。
  • @Sh.Imran "ref 关键字只能在方法的参数中使用" 即not true
  • @SayantanMandal is MyObject 实际上是一个对象(类)?如果是,我不确定你为什么需要ref。
  • @SayantanMandal 每次都调用它有什么问题?您可以使用private MyObject fetchObj => MyClass.instance.GetMyObjectNotByRef() 之类的属性来使其更方便。
  • AFAIK ref 方法返回值只能分配给 ref local 变量,不能分配给类级别变量docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…

标签: c# unity3d pass-by-reference


【解决方案1】:

由于您的MyObject 是一个类,您可以使用expression bodied 只读属性:

private MyObject fetchObj => MyClass.instance.GetMyObjectNotByRef();

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多