C#中类的公共静态成员的别名是什么?

3
我有一个名为RenderManager的类,其中有一个公共静态成员TheRenderer。我是否可以创建别名,例如MyRenderer或其他名称,来代替RenderManager.TheRenderer?
谢谢。

不确定您所说的成员别名是什么意思。 - BoltClock
这可能会引起您的兴趣:https://dev59.com/8HM_5IYBdhLWcg3wUxfF - alun
1
你试图解决的实际问题是什么? - Tim Lloyd
4个回答

2
你可以创建一个指向该对象的类或方法级别的符号,但你不能创建一个真正的全局别名来指向该对象。它仍然必须在其他对象中命名空间化。
但是,在本地(函数或类内部),你可以像这样做:var renderer = RenderManager.TheRenderer,但你必须在想要使用该别名的每个地方都这样做。

对,这样你就必须在每个地方都这样做。我希望还有其他方法。 - pokoko222

1

我认为您无法做到这一点。唯一可能的方法是为Type创建别名,而不是为其成员创建别名,就像这样:

using rnd = RendererManager; 

//and in code somewhere use 

rnd.TheRenderer

希望我正确理解了你的意思。


1
我来到这个问题是想问的是是否可能做一些像 using r = RendererManager.TheRenderer; 这样的事情。这是可能的吗?编译器似乎不让我这么做。 - binki

0

你可以声明一个类型为 Func 或 Action 的变量。

如果 TheRenderer 有返回值:

static Func<bool> MyRenderer = () => RenderManager.TheRenderer();

如果不是:
static Action MyRenderer = () => RenderManager.TheRenderer();

如果TheRenderer接受一些输入参数,那么你应该使用其他形式的Func<>和Action<>。
Func<OutT, In1T, In2T, ...>
Action<In1T, In2T, ...>

这个代码是有效的,但你需要在访问RenderManager.TheRenderer()返回值之前调用Invoke()方法,即MyRenderer.Invoke() - Niel de Wet

0
你是指只需要写 var MyRenderer = RenderManager.TheRenderer; 就好了吗?也就是把这个静态成员变量的值赋给一个叫做MyRenderer的变量?

与valipour的解决方案类似,如果在分配后RenderManager.TheRenderer的值发生更改,MyRenderer将具有旧的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接