【发布时间】:2008-11-26 11:46:08
【问题描述】:
在我正在处理的 C# 应用程序中,我有一个很长的标识符,如下所示:-
foo.bar.bwah.blah.whatever.very.very.huge
每当我引用这个对象时,这绝对是一场噩梦,不幸的是我确实需要大量引用它:-
var something = foo.bar.bwah.blah.whatever.very.very.huge.a;
var somethingElse = foo.bar.bwah.blah.whatever.very.very.huge.b;
foo.bar.bwah.blah.whatever.very.very.huge.c = 12;
等等。等等
我想使用某种更小的别名来更新此代码,但问题是我想更改底层引用,并且还更新别名而不显式更新别名。
目前,如果我执行以下操作:-
foo.bar.bwah.blah.whatever.very.very.huge.a = "hello";
string shorter = foo.bar.bwah.blah.whatever.very.very.huge.a;
foo.bar.bwah.blah.whatever.very.very.huge.a = "world";
Console.WriteLine(shorter);
它将输出“你好”。我想要实现的是以下内容:-
foo.bar.bwah.blah.whatever.very.very.huge.a = "hello";
string** shorterPointer = &foo.bar.bwah.blah.whatever.very.very.huge.a;
foo.bar.bwah.blah.whatever.very.very.huge.a = "world";
Console.WriteLine(**shorter);
这将根据需要输出“世界”。
我相信你可以在 C# 中使用不安全的代码来实现这样的目标,但是我不能这样做,我只能使用安全的代码。
有人对我如何实现这一点有任何想法吗?
请注意:这个问题不是关于字符串是不可变的,我知道它们是 - 事实上我假设它们是为了问题的目的。如果我使用其他类型可能会更简单......所以当我将“hello”分配给a然后将“world”分配给a时,我每次都实例化不同的对象,因此我存储了引用to a 重新分配后失效。
【问题讨论】: