class Program
{
static void Main(string[] args)
{
var users = new List<User>();
users.Add(new User { Id = 0, Score = 1 });
users.Add(new User { Id = 1, Score = 1 });
Func1(users, 2);
Func1(new List<User>(users), 3);
Func1(users.AsReadOnly().ToList(), 4);
Func2(ref users, 5);
}
static void Func1(List<User> u, int q) { u[0].Score = q; }
static void Func2(ref List<User> u, int q) { u[0].Score = q; }
}
class User
{
public int Id { get; set; }
public int Score { get; set; }
}
我不希望在Func1
或Func2
中更改“Score”属性。 “Score”属性只能在Main()
方法中更改。怎么做?
接口。
创建一个User实现的IUser接口,并为其赋予一个属性Score,其中只有一个getter,而不是一个setter。使函数采用IUser而不是User的列表。
Main将创建User,因此可以修改得分,而Func1和Func2只能访问getter,而无法修改它。