gpt4 book ai didi

c# - 允许类之外的字段访问是一个好习惯,还是始终只允许通过属性访问字段?

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:18 25 4
gpt4 key购买 nike

<分区>

我想了解 Field 的正确用法,以及是否应该允许其他类访问字段,还是应该始终通过属性访问?

考虑我有如下代码:

internal class MyCalculator : IDisposable
{
public Type1 type1;
public MyCalculator(Type1 type1)
{
this.type = type1;
}
}

internal class Accessor
{
public void Foo()
{
MyCalculator obj = new MyCalculator();
obj.type1.Id = 10;
}
}

这是允许访问另一个类之外的公共(public)字段的好做法,还是应该始终仅通过属性访问?

当我检查 List 的源代码时,我看到了这个:

public class List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>
{
private const int _defaultCapacity = 4;

private T[] _items;
[ContractPublicPropertyName("Count")]
private int _size;
private int _version;
}

私有(private)属性下划线标记,而相同的字典私有(private)成员未用下划线标记,如下所示:

public class Dictionary<TKey,TValue>: IDictionary<TKey,TValue>, IDictionary, IReadOnlyDictionary<TKey, TValue>, ISerializable, IDeserializationCallback  {

private struct Entry {
public int hashCode; // Lower 31 bits of hash code, -1 if unused
public int next; // Index of next entry, -1 if last
public TKey key; // Key of entry
public TValue value; // Value of entry
}

private int[] buckets;
private Entry[] entries;
private int count;
private int version;
private int freeList;
private int freeCount;
}

所以我有点困惑,上面两个之间有什么区别,即 List 和 Dictionary 私有(private)成员,或者我可能遗漏了什么?

这不完全是重复的,因为我问了太多东西,当然我可以在问题中提到这一点,但因为我不希望我的标题问题太大。

此外,我还根据我在代码中显示的内容(字段和属性代码片段)以及在我的特定情况下这是否是一种好的做法来问这个问题。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com