【发布时间】:2016-08-17 16:27:42
【问题描述】:
短版
在 C++ 中我可以做到这一点...
const auto & help_id = help_type.functionHelpTypeId;
如何在 C# 中做到这一点?
加长版
如何使一个变量成为 C# 中类字段或属性的只读别名?
我有一个方法,我在函数顶部创建只读别名,以便使其余代码更清晰一些,并在以后节省一些输入。
var help_id = help_type.functionHelpTypeId;
var changeset_version = changeset.version;
var helpPageType = help_type.helpPageType;
// &ct.
我的问题是,由于这些不是 const,任何人都可以重新分配它们或改变它们所指的对象,这不是我的意图。为了知道这些只是类字段的只读别名,基本上必须研究整个函数,这是不行的。
【问题讨论】:
-
简短回答:你不能。长答案:如果您在对象构造函数中设置值,则可以使用
readonly。 -
使用
const和显式类型声明有什么问题?你试过吗?const int help_id = help_type.functionHelpTypeId; -
“任何人都可以重新分配......”你的意思是你担心你的代码的维护者搞砸了吗?您可以在声明和分配变量的位置添加代码注释。
-
旁注:如果您的方法非常冗长以至于您需要以这种方式保护局部变量,您可能希望将代码重构为更小的方法。
-
这与代码长度无关,而是在处理迷宫般的字段和类型名称,并且真诚地期望 C# 与 C++ 一样具有表现力。
标签: c#