Вы думаете, что универсальные свойства были бы полезны в.NET?

Вы можете попробовать это.

private static String readFile(String pathname) throws IOException {

 File file = new File(pathname);
    StringBuilder fileContents = new StringBuilder((int)file.length());        

    try (Scanner scanner = new Scanner(file)) {
        while(scanner.hasNextLine()) {
            fileContents.append(scanner.nextLine() );
        }
        return fileContents.toString();
    }
}

Этот код будет читать все строки из текстового файла и выдавать нас как одну строку в качестве возвращаемого объекта.

7
задан Jonathan Parker 16 March 2009 в 23:21
поделиться

6 ответов

Я имел пару раз, где мне понравилась бы способность сделать это, да.

Однако включенный синтаксис был бы довольно ужасен, и достаточно редко полезно, что я думаю, что предпочитаю просто сосать его и идти с общими методами.

10
ответ дан 6 December 2019 в 14:10
поделиться

Нет.

1
ответ дан 6 December 2019 в 14:10
поделиться

Вот один пример, где было бы удобно для меня, если это будет возможно.

var settings = new Settings();  
int timeout = settings<int>["CacheInMinutes"];

Где Настройки загружают XML-файл переменных конфигурации.

Это, по сравнению с:

var settings = new Settings();  
int timeout = int.Parse(settings["CacheInMinutes"]);  

Действительно не большая часть различия, но эй, я все еще предпочел бы универсальный индексатор.

1
ответ дан 6 December 2019 в 14:10
поделиться

Нет.

Общие методы имеют смысл, потому что они воплощают некоторую (универсальную) операцию, которая может разумно быть применена к различным типам.

Но свойства только имеют смысл как исключительно названные значения с определенным содержанием. 'Универсальные свойства', как Вы предлагают, действительно только суммы к подобно названным свойствам с другой подписью и другим содержанием.

1
ответ дан 6 December 2019 в 14:10
поделиться

Если бы по некоторой причудливой причине Вы решили желание ее то Вы могли бы отсортировать фальшивки ее с методами:

public class Thing
{
    Dictionary<Type, object> xDict = new Dictionary<Type,object>();
    public void set_X<T>(T x)
    {
        xDict[typeof(T)] = x;
    }
    public T get_X<T>()
    {
        return (T)xDict[typeof(T)];
    }
}

То, почему Вы хотели бы, является совершенно другим разговором, все же. Обычно имеет больше смысла запускаться с чего-то, что Вы хотите сделать, чем некоторый способ, которым Вы хотите сделать это.

0
ответ дан 6 December 2019 в 14:10
поделиться

Без уничтожающего варианта использования, нет. Можно уже достигнуть того же самого с парой общих методов, должны Вы нуждаться в нем.

1
ответ дан 6 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: