本着最佳实践的精神:总是返回一个____,从来没有____,我在即将从JDK1.4.2迁移到JDK5等等时遇到了类似的问题.(是的,我知道,JDK1.4.2是EOL! ;-)).
对于返回集合的函数(不是简单的属性集合),我总是更喜欢(在JDK1.4.2中)返回一个Array而不是一个通用的List,因为:
MyObject[]而不是对象列表,更多类型安全的静态 - 如'编译' - 级别)当然,我总是创建这个返回的数组(我没有公开任何'内部'数组)
现在,在JDK5及更多版本中,List<MyObject>如果我愿意,我可以使用它.  
选择返回MyObject[]而不是List或Collection<MyObject>在java5中编码时有什么好理由?
如果Collection<MyObject>使用奖金,可以:
add()或remove()可能)PS:JavaGenericFAQ没有那个.
有可能以某种方式将a标记System.Array为不可变.当置于public-get/private-set之后,它们无法添加,因为它需要重新分配和重新分配,但消费者仍然可以设置他们希望的任何下标:
public class Immy
{
    public string[] { get; private set; }
}
我认为readonly关键字可能会成功,但没有这样的运气.
我总是被告知在数组中添加元素的方式如下:
创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据
如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?
如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?
我不明白C#中的这个错误
错误CS0236:字段初始值设定项无法引用非静态字段,方法或属性'Prv.DB.getUserName(long)'
对于以下代码
public class MyDictionary<K, V>
{
    public delegate V NonExistentKey(K k);
    NonExistentKey nonExistentKey;
    public MyDictionary(NonExistentKey nonExistentKey_) { }
}
class DB
{
    SQLiteConnection connection;
    SQLiteCommand command;
    MyDictionary<long, string> usernameDict = new MyDictionary<long, string>(getUserName);
    string getUserName(long userId) { }
}
arrays ×3
c# ×3
.net ×2
api ×1
collections ×1
delegates ×1
generics ×1
immutability ×1
java ×1
theory ×1