如何组合`var`和`const`?

时间:2016-08-17 16:27:43

标签: c#

短版

在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.

我的问题是,由于这些不是常量,任何人都可以重新分配它们或改变他们所指的对象,这不是我的意图。为了知道这些只是类字段的只读别名,基本上必须要研究整个函数,这是不行的。

2 个答案:

答案 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); } 使用显式类型。

更多讨论:Type-inferring a constant in C#

答案 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本身也是引用类型。