我在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");
}
}
}
提前致谢!
-杰里米
最佳答案
来自Visual C# Code Snippets
索引器
创建一个索引器声明。
在类或结构中。
因此,键入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#
文件夹中。关于c# - C#中索引器的快捷方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36478723/