2013-05-23 2 views
0

Я всегда пишу давно заявляет, как:Можете ли вы сделать более короткие объявления в C#?

private Dictionary<IPAddress, IWebSocketConnection> Dict = new Dictionary<IPAddress, IWebSocketConnection>(); 

Есть ли способ, чтобы написать это:

private Dict = new Dictionary<IPAddress, IWebSocketConnection>(); 
+0

Невозможно сказать - вам нужно либо сделать это, создав var, либо, если вы собираетесь использовать словарь с одинаковыми параметрами того же типа, вы можете создать собственный класс и расширить словарь с параметрами типа. – William

+0

Возможно, стоит отметить, что 'var' недоступен, если вы нацелились раньше .net. 3.5 –

+0

@retailcoder' var' - это функция компилятора, а не время выполнения. Поэтому он должен работать, если ваш компилятор поддерживает C# 3.0 или новее, независимо от того, в какой структуре вы нацеливаетесь. – svick

ответ

3

Для локальных переменных, вы можете сделать:

var Dict = new Dictionary<IPAddress, IWebSocketConnection>(); 

Не для полей классов.

+0

К сожалению, [вы правы] (http://ideone.com/J3gNJH). [Вот почему я использую VB.NET, люди!] (Http://ideone.com/NlBL39) – Ryan

+0

Будет ли какой-либо недостаток в использовании var? например, производительность или intellisense? – Muis

+1

№ 'var' оценивается во время компиляции, чтобы получить тип первого присвоенного ему значения. Эффект не влияет на производительность, и Intellisense также может его решить. –

1

или вы также можете создать новый класс :)

создать подкласс от Dictionary<IPAddress, IWebSocketConnection>

public class Dict : Dictionary<IPAddress, IWebSocketConnection> { 
    //... 
} 

И использовать так:

var dict = new Dict(); 
+2

Не собираюсь спускаться вниз, но я не думаю, что «более короткие декларации» гарантируют наследование ... –

0

вы можете использовать псевдоним:

using ShortName = Lib.SubFolder.ClassVeryLongName.SubClassEvenLongerName; 

Это должно быть в верхней части файла/пространства имен, как обычно, * с использованием * s.

затем используйте его.

редактировать:

использовать его как это:

using Dict = System.Collections.Generic.Dictionary<System.Net.IPAddress, YourNamespcae.IWebSocketConnection>; 

Примечание: Вы должны указать полное имя класса, как System.Net.IPAddress
Я не знаю, что это IWebSocketConnection но вы просто добавляете имяpce в начале.

затем использовать его как:

Dict dict1 = новый Dict();

+0

Как это работает с дженериками? – svick

+0

@svick Отредактируйте мой ответ. – Star

Смежные вопросы