Да, как и другие, используйте ниже API для получения комментариев, но вы можете получить только 100 максимум за раз. Но вы получаете nextPageToken в ответ от предыдущего вызова api и передаете nextPageToken на страницуToken для следующего вызова api, пока nextPageToken не определен.
https://www.googleapis.com/youtube/v3/commentThreads?key={your_api_key}&textFormat=plainText&part=snippet&videoId={video_id}&maxResults=100&pageToken={nextPageToken}
Можно использовать .ToString()
для получения String
от StringBuilder
.
Когда Вы говорите, что "это быстрее для конкатенации Строки со Строковым разработчиком", это только верно, если Вы неоднократно (я повторяюсь - неоднократно ), конкатенирующий к тому же объекту.
, Если Вы просто связываете 2 строки и делаете что-то с результатом сразу как string
, нет никакого смысла к использованию StringBuilder
.
я просто наткнулся на хорошую запись Jon Skeet этого: http://www.yoda.arachsys.com/csharp/stringbuilder.html
, Если Вы используете StringBuilder
, затем для получения получающегося string
, это - просто вопрос вызова ToString()
(неудивительно).
После того как Вы завершили обработку с помощью StringBuilder, используйте метод ToString для возврата конечного результата.
Из MSDN:
using System;
using System.Text;
public sealed class App
{
static void Main()
{
// Create a StringBuilder that expects to hold 50 characters.
// Initialize the StringBuilder with "ABC".
StringBuilder sb = new StringBuilder("ABC", 50);
// Append three characters (D, E, and F) to the end of the StringBuilder.
sb.Append(new char[] { 'D', 'E', 'F' });
// Append a format string to the end of the StringBuilder.
sb.AppendFormat("GHI{0}{1}", 'J', 'k');
// Display the number of characters in the StringBuilder and its string.
Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
// Insert a string at the beginning of the StringBuilder.
sb.Insert(0, "Alphabet: ");
// Replace all lowercase k's with uppercase K's.
sb.Replace('k', 'K');
// Display the number of characters in the StringBuilder and its string.
Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
}
}
// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk
// 21 chars: Alphabet: ABCDEFGHIJK
Об этом являющийся более быстрой/лучше памятью:
я изучил эту проблему с Java, я предполагаю, что.NET была бы так же умна об этом.
реализация для Строки является довольно впечатляющей.
Строковый объект отслеживает "длину" и "совместно использованный" (независимый от длины массива, который содержит строку)
, Таким образом, что-то как
String a = "abc" + "def" + "ghi";
может быть реализовано (компилятором/временем выполнения) как:
- Extend the array holding "abc" by 6 additional spaces. - Copy def in right after abc - copy ghi in after def. - give a pointer to the "abc" string to a - leave abc's length at 3, set a's length to 9 - set the shared flag in both.
, Так как большинство строк является недолгим, это делает для некоторого ОЧЕНЬ эффективного кода во многих случаях. Случай, где это абсолютно НЕ эффективно, - когда Вы добавляете к строке в цикле, или когда Ваш код похож на это:
a = "abc";
a = a + "def";
a += "ghi";
В этом случае, Вы - очень более обеспеченное использование конструкции StringBuilder.
Моя точка - то, что необходимо быть осторожными каждый раз, когда Вы оптимизируете, если Вы не АБСОЛЮТНО уверены, что знаете то, что Вы делаете, И Вы абсолютно уверены, что это необходимо, И Вы тестируете, чтобы гарантировать, что оптимизированный код делает передачу варианта использования, просто кодируйте его самым читаемым возможным способом и не пытайтесь - думают компилятор.
я потратил впустую 3 дня, смешивая со строками, кэшируя/снова используя строковых разработчиков и скорость тестирования, прежде чем я посмотрел на строковый исходный код и выяснил, что компилятор уже делал его лучше, чем, я возможно мог для своего варианта использования. Затем я должен был объяснить, как я ДЕЙСТВИТЕЛЬНО не знал то, что я делал, я только думал, что сделал...
Я был бы точно так же, как для вывода, который является, может не обязательно быстрее, это будет определенно иметь лучший объем потребляемой памяти. Это вызвано тем, что строка неизменна в.NET и каждый раз, когда Вы меняете струну, Вы создали новый.
Это не быстрее к concat - Как smaclell указанный, проблемой является неизменная строка, вызывающая дополнительное выделение и перекопировавшая существующих данных.
+ "b" + "c" не быстрее, чтобы сделать со строковым разработчиком, но повторил, что concats с промежуточной строкой становится быстрее и быстрее, как # concat's становится больше как:
x = "a"; x + = "b"; x + = "c";...