3

Есть ли лучший способ осуществить переход от регулярной (большой) строки в IInputStream, чем это:Преобразовать строку IInputStream в C#

public static async Task<IInputStream> ToInputStream(this string input) 
{ 
    byte[] bytes = Encoding.UTF8.GetBytes(input); 

    var memoryStream = new InMemoryRandomAccessStream(); 
    await memoryStream.WriteAsync(bytes.AsBuffer()); 
    await memoryStream.FlushAsync(); 
    memoryStream.Seek(0); 

    return memoryStream; 
} 

ответ

2

ОК, похоже, есть немного более короткая версия:

public static IInputStream ToInputStream(this string input) 
{ 
    byte[] bytes = Encoding.UTF8.GetBytes(input); 
    MemoryStream stream = new MemoryStream(bytes); 
    return stream.AsRandomAccessStream(); 
} 
1

Для этого может использоваться DataWriter.WriteString(). Он записывает значение в определенном формате, поэтому убедитесь, что это то, что вы хотите.

2

Как полагает Крис Guzak здесь еще одна версия, основанная на DataWriter.WriteString():

public async static Task<IInputStream> ToInputStreamAsync(this string input) 
{ 
    var ms = new InMemoryRandomAccessStream(); 

    using(var dw = new DataWriter(ms)) 
    { 
     dw.WriteString(input); 
     await dw.StoreAsync(); 
     dw.DetachStream(); 
    } 

    return ms; 
} 

Хотя не уверен, какой из них лучше.

Смежные вопросы