為什么我可以設(shè)置私有集屬性的屬性?

我有一個(gè)類LoginManager,它有一個(gè)私有字段currentUser和一個(gè)公共屬性CurrentUser,不允許自己從LoginManager類之外意外更改CurrentUser的值。

CurrentUser只是{ get; },但我仍然可以更改基礎(chǔ)currentUser中的屬性,它是私有的。

eg.

Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // true
loginManager.CurrentUser.ClockedIn = false;
Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // false
loginManager.CurrentUser.ClockedIn = true;
Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // true

LoginManager.cs

public class LoginManager
    {
        private User? currentUser { get; set; }
        private readonly ApplicationDbContext dbContext;

        public event EventHandler CurrentUserChanged;

        public User? CurrentUser
        {
            get { return currentUser; }
        }

        //...
    }

User.cs

public class User
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public bool ClockedIn { get; set; }

    }

我想要它,這樣我就不能從LoginManager類之外更改CurrentUser。誰能給我指一下正確的方向嗎?

? 最佳回答:

我想我看到了問題所在,私有CurrentUser實(shí)例getset屬性在類之外公開,因?yàn)檫@些成員變量的作用域是public

為什么不將User屬性private設(shè)為private?

public class User
{
    private Guid Id { get; set; }
    private string Name { get; set; }
    private string Username { get; set; }
    private string Password { get; set; }
    private bool ClockedIn { get; set; }

}

或者如果需要get屬性標(biāo)記private set

public class User
{
    public Guid Id { get; private set; }
    public string Name { get; private set; }
    public string Username { get; private set; }
    public string Password { get; private set; }
    public bool ClockedIn { get; private set; }
}

或者顯式地使它們readonly,這樣它們只能在Constructor中初始化:

public class User
{
    public readonly Guid Id { get; private set; }
    public readonly string Name { get; private set; }
    public readonly string Username { get; private set; }
    public readonly string Password { get; private set; }
    public readonly bool ClockedIn { get; private set; }

    public User(Guid Id, string Name, string Username, string Password, bool ClockedIn) 
    {
        this.Id = Id;
        this.Name = NameName;
        this.Username = Username;
        this.Password = Password;
        this.ClockedIn = ClockedIn;
    }
}
主站蜘蛛池模板: 亚洲一区爱区精品无码| 亚洲va乱码一区二区三区| 久久精品国产一区二区三| 亚洲一区二区三区高清视频| 亚洲一区二区三区在线播放| 在线|一区二区三区四区| 亚洲福利电影一区二区?| 亚洲日韩国产精品第一页一区| 国产综合无码一区二区色蜜蜜 | 亚洲国产高清在线一区二区三区 | 亚洲av乱码一区二区三区香蕉| 国精品无码一区二区三区在线| 久久精品人妻一区二区三区| 成人国产精品一区二区网站| 国产一区二区三区电影| 国产精品538一区二区在线| 在线观看精品视频一区二区三区| 日韩一区二区三区射精| 中文字幕无码不卡一区二区三区 | 亚洲av乱码一区二区三区按摩 | 亚洲AV无码一区二区三区系列| 国产精品一区二区av不卡| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 性色av一区二区三区夜夜嗨 | 国产MD视频一区二区三区| 国产成人一区二区精品非洲| 国产一区二区三区视频在线观看| 日本一区视频在线播放| 亚洲一区二区三区在线播放| 国精产品一区二区三区糖心 | 国产伦精品一区二区| 日本一区二区三区精品国产 | 无码人妻AV免费一区二区三区| 久久久无码精品国产一区| 中文字幕日韩丝袜一区| 免费高清在线影片一区| 中文字幕一区二区区免| 亚洲av福利无码无一区二区| 国产精品成人免费一区二区| 国产一区精品视频| 久久se精品动漫一区二区三区|