К сожалению, в C# в настоящее время нет простого способа сделать это. Если вам повезет, документация вам скажет, но в целом это не так.
Проверка коды с отражателем (предполагая, что мы говорим управляемый код) может показать, если ток реализации имеет какие-либо побочные эффекты, но так как это деталь реализации нет никакой гарантии, что она не изменится в будущем, поэтому в основном вам придется повторять проверку каждый раз, когда вы обновляете данный код.
Такие инструменты, как NDepend, могут помочь вам найти зависимости между типами - например, если вы тоже ищете побочные эффекты.
Для ваших собственных типов вы можете реализовать неизменность, убедившись, что экземпляры никогда не течет ссылки на внутренние элементы. Обязательно скопируйте содержимое экземпляров ссылочного типа, используемых для создания экземпляров объектов, так как другие могут иначе ссылаться на внутреннее состояние.
Если ваш код начинает идти с выраженной лимпиткой, он развивает lisp и начинает называть вас «mashter», вы знаете, что он мутировал. :) (извинения, я не удержался) –
Это сложнее, чем вы думаете. Но прежде всего, если какие-либо нелокальные переменные в функции появляются в левой части присваивания или изменены любыми вызовами функций, выполненными внутри этой конкретной функции, тогда у вас есть возможная мутация. На самом деле это довольно сложная проблема, в частности, из-за таких вещей, как отражение и т. Д. – BobbyShaftoe