Shifter's post is language-agnostic. It suggests a couple of data structures and functions but leaves implementation abstract.
What Shifter described is basically this:
Say you have a map which is represented as a 2D array, as in warnexus's post. Anything on the map (a character, monster, wall, whatever) has a current position represented as a point on that map. So the player character might be at position (5, 6), where 5 is the x coordinate and 6 the y. If the player wants to move up one space (coordinate point (5, 7)) your game would update the player's position accordingly.
But if there's a wall at (5, 7) you won't want the player to be able to move there. So in the function you're using to move the player character you would first check to see if moving from (5, 6) to (5, 7) is valid. If it is, meaning that the space is open and the player can move there, then you would allow the function to update the player's location to (5, 7). If it's not valid, meaning that (5, 7) is blocked for whatever reason, then the function will not allow the player's location to (5, 7) but rather will remain (5, 6).
How exactly this will be implemented in your code depends on how you've designed it, which we can't know unless you give us some more information. How you're handling time (turn-based, real-time, whatever) doesn't really matter; you would perform the check as often as is necessary, whether that's by turn, per tick, per second, per hour, per movement attempt.
Unless and until you give us more information on what code you've already written or how you've designed things so far no one will be able to give you much more than general advice. I can't tell you how to implement this in C#, not because neither of us knows C# well enough but because there's no one "C#" way to do it. The language is about rules for how code is written, it doesn't enforce many design constraints on you. Language makes zero difference at all in designing these features into your game. So again, I'll request that you present some code to us, or some design decisions you've made, or ask some more specific questions, or ask for more specific clarifications.