Re[4]: какого цвета роза, когда на нее никто не смотрит?
От: Lloyd Россия  
Дата: 04.02.03 12:31
Оценка: 7 (3)
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ghostrider, Вы писали:


AVK>>>Ты забыл сказать чего ты собственно хочешь добиться и зачем.

G>>наличия строковых констант на которые я мог бы в любой момент ссылаться в своем коде (из другой сборки)

AVK>Ссылайся наздоровье на обычные константы? Что мешает?


Имхо, перед тем как такое советовать, следует посмотреть, что компилятор сделает с обращением к такой константе.

Вот пример:

1-ая сборка:


namespace Test1
{
    public class ClassA
    {
        public const string CONST = "Const 2";
    }
}



2-ая сборка:

using System;

namespace Test2
{
    public class ClassB
    {
        public static void Main()
        {
            Console.WriteLine(Test1.ClassA.CONST);
        }
    }
}



IL метода Main из второй сборки:


.method public hidebysig static void  Main() cil managed
{
  .entrypoint
  // Code size       11 (0xb)
  .maxstack  1
  IL_0000:  ldstr      "Const 2"
  IL_0005:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000a:  ret
} // end of method ClassB::Main


Как видишь, в IL-е никакого обращения к статической переменной нет. Вместо этого компилятор подставил строковый литерал. Поэтому, если ты измнишь в первой сборке определение CONST, и пересоберешь ее, не пересобирая сборку 2, то ничего хорошего после этого не будет (во второй сборке останется прежднее значение CONST).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.