Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何定义从外部放入方法中的对象_C#_Unity3d_Object_Methods - Fatal编程技术网

C# 如何定义从外部放入方法中的对象

C# 如何定义从外部放入方法中的对象,c#,unity3d,object,methods,C#,Unity3d,Object,Methods,我想知道如何从外部声明要放入方法中的对象。 当然,当它们不能作为参数传递给方法时 我的意思是: 我想到的一种方法是制作一个指向我想要使用的对象的替代对象。例如,如果我根据条件的结果替换第一个或第二个更改。但是我该怎么做呢 PS:至于我为什么要这样做,而不是把if语句放在方法本身中,这是为了更好的优化,而且这样做更整洁,如果有的话。如果我制作了第三个对象来很好地存储这些值,它不会改变主要对象的值。例如,transform.position 在我的特殊情况下,我需要这个统一更新函数。因为它必须在每一

我想知道如何从外部声明要放入方法中的对象。 当然,当它们不能作为参数传递给方法时

我的意思是:

我想到的一种方法是制作一个指向我想要使用的对象的替代对象。例如,如果我根据条件的结果替换第一个或第二个更改。但是我该怎么做呢

PS:至于我为什么要这样做,而不是把if语句放在方法本身中,这是为了更好的优化,而且这样做更整洁,如果有的话。如果我制作了第三个对象来很好地存储这些值,它不会改变主要对象的值。例如,transform.position

在我的特殊情况下,我需要这个统一更新函数。因为它必须在每一帧检查if语句,如果它在内部,并且它不接受参数


所以,如果它在更新中声明,比如说,哪一个将被使用,它会更好。另外,如果您有关于此案例的提示,我将很高兴听到。

如果我正确理解您想要实现的目标,请使用以下属性:

private Object First;
private Object Second;

public Object SelectedObject {
     get {
            if (Condition) 
                   return First;// Use First in bar()
            else
                   return Second;// Use Second in bar()
     }

     set {
           if (Condition) 
                   First = value;// Use First in bar()
            else
                   Second = value;// Use Second in bar()
      } 

} 


// Now we need to define whether 'First' Or 'Second' is going to be used in bar()



void bar(){
  
     Console.Log(
         this.SelectedObject
     );
}

但是,嘿,我不能分配给属性,说它是只读的。知道我该怎么处理吗?因为这是我真正需要的,所以我需要能够更改主要对象的值。如果它是第一个对象,那么第一个对象应该更改,如果是第二个对象,那么第二个对象应该更改。但是每次获得值时,仍然会生成If-else,因此这不会优化任何内容,只需将检查移动到另一个位置即可。@Saplu您是对的。我想我还没有找到一个优化它的方法。我真想知道别人是怎么处理的。这是一个如此明确的问题,我不知道为什么我会被否决!假设有多个if语句在每一帧检查它们,会对性能造成很大的影响。如果需要根据某个条件决定某件事,那么只能使用if。在现代计算机中,如果汽车不是数千辆,那么性能影响是可以忽略的。我问这个问题是为了得到一个关于如何在统一的条件下优化使用的答案。如果说不通的话,我很乐意知道原因,而不是在这件事上投反对票。
private Object First;
private Object Second;

public Object SelectedObject {
     get {
            if (Condition) 
                   return First;// Use First in bar()
            else
                   return Second;// Use Second in bar()
     }

     set {
           if (Condition) 
                   First = value;// Use First in bar()
            else
                   Second = value;// Use Second in bar()
      } 

} 


// Now we need to define whether 'First' Or 'Second' is going to be used in bar()



void bar(){
  
     Console.Log(
         this.SelectedObject
     );
}