VB.NET Есть ли способ создать константу препроцессора, которая ведет себя как простая подстановка текста? - PullRequest
2 голосов
/ 10 февраля 2011

VB.NET 2010, .NET 4

Здравствуйте,

Я хотел бы сделать (что-то вроде) следующее:

\#Const T = "Byte()"

Public Class MyClass
  Inherits SomeGenericClass(Of T)

  .. other code ..
End Class

И заставить его действоватьтак же, как если бы я набрал

Public Class MyClass
  Inherits SomeGenericClass(Of Byte())

  .. other code ..
End Class

Это не так много, что у меня есть , чтобы сделать это таким образом, мне просто любопытно, возможно ли такое.

Заранее спасибо!

Брайан

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Нет, это невозможно. Разработчики Visual Basic и C # решили не допустить C-подобный препроцессор, потому что они чувствовали, что это приводит к большому количеству ошибок и путаницы. Очень легко написать C-макросы, которые ведут себя непреднамеренно, и дизайнеры VB и C # считают, что безопасность для широкого круга разработчиков имеет приоритет. Поэтому определения в VB и C # являются только «определенными» или «неопределенными», а не имеющими значения.

Эрик Ганнерсон обсуждает это с точки зрения C # здесь , и я думаю, что логика разработки VB.NET была, по сути, такой же.

1 голос
/ 23 сентября 2011

У вас есть только: #Const #If #Else #Endif Но вы можете использовать другую программу для генерации кода.

...