我经常编写一个c#代码,如下所示:
void func(object myObject)
{
if (myObject == null)
{
throw new ArgumentNullException("myObject");
}
...
如何在Visual Studio 2012中为该类型的代码编写自动完成功能,以便我不必一直输入此内容?
答案 0 :(得分:7)
由于没有兴趣,我将通过发布我自己的解决方案来关闭这个问题。将以下文件放入C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC#\Snippets\1033\Visual C#\ifn.snippet
将会起到作用:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>ifn</Title>
<Shortcut>ifn</Shortcut>
<Description>Code snippet for if (arg==null)</Description>
<Author>sam green</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>argument</ID>
<Default>arg</Default>
<ToolTip>Argument</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[if ($argument$ == null)
{
throw new ArgumentException("$argument$");
}$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
答案 1 :(得分:1)
我使用自动生成和猜测我想要的参数的关键字“argnull”为此定义了一个ReSharper快捷方式。我认为,它与您的解决方案大致相同,但您不需要使用XML或放置文件。
以下是ReSharper VB.NET方法的示例:
if $VAR$ is nothing then
throw new ArgumentNullException("$VAR$")
end if
答案 2 :(得分:0)
为改善@galet的答案,以下是我的:
if() throw;
语句。ArgumentNullException
而不是ArgumentException
。nameof()
避免使用魔术弦(因此可以与Refactor-Renames完美配合)。is null
operator:<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>ifn</Title>
<Shortcut>ifn</Shortcut>
<Description>Code snippet for if (arg==null)</Description>
<Author>https://stackoverflow.com/questions/18905475</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>argument</ID>
<Default>arg</Default>
<ToolTip>Argument</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[if( $argument$ is null ) throw new ArgumentNullException( nameof($argument$) );$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>