短版
在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.
我的问题是,由于这些不是常量,任何人都可以重新分配它们或改变他们所指的对象,这不是我的意图。为了知道这些只是类字段的只读别名,基本上必须要研究整个函数,这是不行的。
答案 0 :(得分:2)
你不能:"隐式类型的局部变量不能是常数"。
只需为for(var j= 0; j< film.length; j++){
(function (j_aux) {
$.getJSON("http://www.omdbapi.com/?t="+film[j]+"&y=&plot=short&r=json", function(json) {
console.log("processing "+j_aux+" : "+film[j_aux]);
$("#info").append("<div id="+j_aux+" class='for-info'></div>");
$('#load').empty();
for(val in json)
$("#"+j_aux).append('<p>'+val+' --> '+json[val]+'</p>');
$("#"+j_aux).append("<p><br/></p>");
});
})(j);
}
使用显式类型。
答案 1 :(得分:1)
为了补充@ AlexeiLenkov的答案,您仍然可以创建一个匿名类型,其属性是只读的:
var help = new
{
help_id = help_type.functionHelpTypeId,
changeset_version = changeset.version,
helpPageType = help_type.helpPageType,
};
help.help_id = 312; // CS0200: It is readonly
但是,这只能在本地范围内使用。另外,请注意引用类型是可变的,help
本身也是引用类型。