Могут быть другие более быстрые / лучшие способы сделать это, но вы можете просто использовать строковый буфер и цикл for:
public String stringToAsterisk(String input) {
if (input == null) return "";
StringBuffer sb = new StringBuffer();
for (int x = 0; x < input.length(); x++) {
sb.append("*");
}
return sb.toString();
}
Если ваше приложение однопоточное, вы можете использовать StringBuilder вместо этого, но он не является потокобезопасным.
Я не уверен, что это может быть быстрее:
public String stringToAsterisk(String input) {
if (input == null) return "";
int length = input.length();
char[] chars = new char[length];
while (length > 0) chars[--length] = "*";
return new String(chars);
}
Вы не можете сделать этого с
public interface IMySpecialCollection : IList<MyObject>, IList { ... }
Но можно сделать то, что Вы хотите с классом, необходимо будет сделать реализации для одного из интерфейсов явными. В моем примере я сделал IList явный.
public class MySpecialCollection : IList<MyObject>, IList { ... }
IList<object> myspecialcollection = new MySpecialCollection(); IList list = (IList)myspecialcollection;
Вы рассмотрели наличие, IMySpecialCollection реализуют ISerializable для сериализации? Поддержка нескольких типов набора кажется немного неправильным мне. Можно также хотеть посмотреть на кастинг IList к IEnumerable для сериализации, так как IList просто переносит IEnumerable и ICollection.
Измените свою универсальную реализацию на...
T IList<T>.this[int index] { get; set; }
Это явно говорит, который 'это' который.
К сожалению, Вы не можете объявить два индексатора с тем же списком параметров. Следующий параграф взят отсюда Руководство по программированию C# - Используя раздел "Remarks" Индексаторов:
Подпись индексатора состоит из числа и типов его формальных параметров. Это не включает тип индексатора или названия формальных параметров. Если Вы объявляете больше чем один индексатор в том же классе, у них должны быть различные подписи.
Необходимо будет объявить другой набор параметров, если Вы хотите использовать второй индексатор.
Список <T> подразумевает IList, таким образом, это - плохая идея использовать обоих в том же классе.
Это обман , мой вопрос здесь
Подводя итог, если вы сделаете это, это решит проблему:
public Interface IMySpecialCollection : IList<MyObject>, IList
{
new MyObject this[int index];
...
}