c# - 将方法参数设置为只读

标签 c# .net parameters readonly

我怎样才能创建一个方法来获取一个只读目的的对象

public class Person 
{
    public string Name;
}

public void RunMe(Person p)
{
    p.Name="XXXX";
}

var p =new Person();
p.Name="YYYY";

RunMe(p);
Console.WriteLine(p.Name);

我得到了 XXXX。但我希望 person 对象不会改变它的值。

最佳答案

您可以使用接口(interface)来限制访问。最好将接口(interface)而不是具体对象作为参数传递给方法。

public interface IReadablePerson
{
    string Name { get; }
}

public interface IWritablePerson
{
    string Name { set; }
}

public class Person : IReadablePerson, IWritablePerson
{
    public string Name { get; set; }
}

然后有这样的方法

public void RunMe(IReadablePerson p)
{
   p.Name = "XXXX"; //compile time error!!!
}

关于c# - 将方法参数设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719107/

相关文章:

c# - ASP.net c# - 无法加载类型

.net - Netduino no "Console.WriteLine",控制台在当前上下文中不存在

parameters - 函数中参数顺序的约定

c - 常量变量的定义与#define

使用 StreamWriter 写入文本文件时出现 C# OutOfMemoryException

c# - iTextSharp : The process cannot access the file. 文件流似乎已关闭

C# 静态方法和属性 : Object reference not set to an instance of an object

c# - 泛型类的空值

perl - 如何解引用@$_?

c# - 使用 XmlNamespaceManager 将命名空间添加到 XmlDocument