C#中索引器的快捷方式

时间:2016-04-07 14:08:38

标签: c# visual-studio indexer

我在C#中的类中使用索引器,但我想知道默认情况下是否存在用于制作索引器的快捷方式(例如cw的'Console.WriteLine()标签选项卡' 。有谁知道这是否存在?

这是“Person”类的代码(带索引器):

public string SurName { get; set; }
public string FirstName { get; set; }
public string Birthplace { get; set; }

public string this[int index]
{
    set
    {
        switch (index)
        {
            case 0:
                this.SurName = value;
                break;
            case 1:
                this.FirstName = value;
                break;
            case 2:
                this.Birthplace = value;
                break;
            default:
                throw new ArgumentOutOfRangeException("index");
        }
    }
    get
    {
        switch (index)
        {
            case 0: return this.SurName;
            case 1: return this.FirstName;
            case 2: return this.Birthplace;
            default:
                throw new ArgumentOutOfRangeException("index");
        }
    }
}

提前致谢!

-Jérémy

2 个答案:

答案 0 :(得分:5)

来自Visual C# Code Snippets

  

索引

     

创建索引器声明。

     

在类或结构中。

enter image description here

因此,输入 ind 并按两次 Tab 。这会生成;

public object this[int index]
{
     get { /* return the specified index here */ }
     set { /* set the specified index to value here */ }
}
  

但是,是否还有一个填充get和set的片段   自动?

,之前我没试过,但我打开了propfull.snippet似乎是这样;

        ....
        <Literal>
            <ID>field</ID>
            <ToolTip>The variable backing this property</ToolTip>
            <Default>myVar</Default>
        </Literal>
    </Declarations>
    <Code Language="csharp"><![CDATA[private $type$ $field$;

public $type$ $property$
{
    get { return $field$;}
    set { $field$ = value;}
}
....

indexer.snippet看起来像;

....
....
<Code Language="csharp"><![CDATA[$access$ $type$ this[$indextype$ index]
{
    get {$end$ /* return the specified index here */ }
    set { /* set the specified index to value here */ }
}]]>
....

所以,如果你在<Literal><ID>field</ID>...</Literal>中定义indexer.snippet部分,如果你改变它的getter和setter就好了;

public object this[int index]
{
   get { return $field$; }
   set { $field$ = value; }
}

如果一切顺利,可能会工作。顺便说一句,这是有效的,它将创建一个除索引器之外的私有字段。这些代码段位于Visual Studio 2012的C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC#\Snippets\1033\Visual C#文件夹中。

答案 1 :(得分:1)

您可以创建代码段,看看此页面:https://msdn.microsoft.com/en-us/library/ms165394.aspx 或此页面显示现有代码段 https://msdn.microsoft.com/en-us/library/z41h7fat.aspx