Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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中的其他变量#_C#_.net 4.0 - Fatal编程技术网

C# 将变量指向c中的其他变量#

C# 将变量指向c中的其他变量#,c#,.net-4.0,C#,.net 4.0,是否可以将一个变量指向另一个变量以实现快捷方式?例如,假设在一个名为SharedResources.proxTelescope的类中有一个变量,那么如何在另一个名为prox的类中获得一个变量,以某种快捷方式指向第一个变量。我可以只做var-prox=SharedResources.proxTelescope,但如果proxTelescope更改,它将不会反映在prox上,是吗?我应该怎么做呢。我会把东西设置为一个属性 private <type> prox { get { r

是否可以将一个变量指向另一个变量以实现快捷方式?例如,假设在一个名为
SharedResources.proxTelescope
的类中有一个变量,那么如何在另一个名为
prox
的类中获得一个变量,以某种快捷方式指向第一个变量。我可以只做
var-prox=SharedResources.proxTelescope,但如果proxTelescope更改,它将不会反映在prox上,是吗?我应该怎么做呢。

我会把东西设置为一个属性

private <type> prox
{
    get { return SharedResources.proxTelescope; }
    set { SharedResources.proxTelescope = value }
}
private prox
{
获取{return SharedResources.proxTelescope;}
设置{SharedResources.proxTelescope=value}
}

您可以创建一个属性,例如:

public YourTypeHere prox
{
    get { return SharedResources.proxTelescope; }
    set { SharedResources.proxTelescope = value; }
}

如果该值应该在所有实例之间“共享”,那么最好让该变量作为其所在类的静态成员存在,并创建一个引用静态变量值的实例属性

如果变量是类,则它们是引用类型,因此其中一个变量的任何更改都将反映在另一个变量中


如果变量是结构,那么它们是值类型,如果您遇到问题,可以使用一些函数(或属性)来获取值。

另一种方法是使用
Func


你说的变化是什么意思?如果proxTelescope的属性或变量发生变化,它也会在prox中发生变化。但是,如果proxTelescope的赋值本身发生变化,那么它现在将成为与prox不同的对象。是的,我指的是赋值。至少使用这种方法,您不会依赖模糊和非特定的引用进行链接。将其声明为类属性更清晰,更易于阅读和维护。但是,它的效率较低,并且是代码膨胀的次要原因。这都是关于你真正想要完成的事情。好吧,我会接受一个代表性较少的。谢谢,我不知道为什么我没有想到这一点。“您可以在7分钟内接受答案。”假设该属性为引用类型,则此操作应该有效。值类型属性并非如此明确。可变结构会做一些奇怪的事情。但如果其中一个引用变量被设置为不同的值,它将不会反映在其他变量中,对吗?@ArlenBeiler更正。如果proxTelescope被重新分配,那么它将不再反映在其他对象中。我同意,我假设他不会将其分配给指向另一个对象,只会更改他已经引用的对象。
public class MyClass
{
    public Func<DesiredType> ValueGetter {get;set;}
    public DesiredType Value { get { return ValueGetter(); } }
}
var myClass = new MyClass();
myClass.ValueGetter = () => SharedResources.proxTelescope;

var value = myClass.Value;