静态只读(static readonly)与常量(const)在C#中的区别:差异何在及如何选择?
```html
Всем привет! Я начинающий C# разработчик и запутался в двух похожих концепциях: `static readonly` и `const`. Обе используются для объявления неизменяемых значений, но я не понимаю, когда применять каждую из них.
Например, я пишу класс для работы с математическими вычислениями:
```csharp
public class MathHelper
{
public const double Pi = 3.14159;
public static readonly double E = 2.71828;
}
```
Почему бы не сделать обе константами? Или обе `static readonly`? В чем тут принципиальная разница?
Я читал, что `const` работает быстрее, но `static readonly` как-то связан с памятью. Еще слышал, что `const` можно использовать только для примитивных типов, а `static readonly` — для любых. Но мне не до конца ясны практические последствия.
Можете объяснить на простых примерах, когда какой вариант использовать? Особенно интересует поведение при изменении кода в библиотеках (DLL) — я слышал, что тут есть подводные камни.
Заранее спасибо за помощь!
```