我想爲流編寫bool StartsWith(string message)
擴展方法。什麼是最有效的方法?StartsWith流的擴展方法
1
A
回答
2
開始這樣的事情...
public static bool StartsWith(Stream stream this, string value)
{
using(reader = new StreamReader(stream))
{
string str = reader.ReadToEnd();
return str.StartsWith(value);
}
}
然後優化...我會離開這個作爲練習你,StreamReader
有各種Read方法,這將讓你在更小的讀取流'塊'爲更有效的結果。
+2
在這種情況下,使用StreamReader並不是一個好主意,因爲它會在閱讀器處置時關閉流,這很可能是意想不到的。 – ChrisWue
1
static bool StartsWith(this Stream stream, string value, Encoding encoding, out string actualValue)
{
if (stream == null) { throw new ArgumentNullException("stream"); }
if (value == null) { throw new ArgumentNullException("value"); }
if (encoding == null) { throw new ArgumentNullException("encoding"); }
stream.Seek(0L, SeekOrigin.Begin);
int count = encoding.GetByteCount(value);
byte[] buffer = new byte[count];
int read = stream.Read(buffer, 0, count);
actualValue = encoding.GetString(buffer, 0, read);
return value == actualValue;
}
過程中Stream
本身並不意味着它的數據都被解碼爲字符串表示。如果你確定你的流是,你可以使用上面的擴展名。
相關問題
- 1. IQueryable擴展方法的流利語法?
- 2. python startswith方法
- 3. 擴展流星login與密碼方法
- 4. 擴展方法
- 5. 擴展方法
- 6. 的擴展方法
- 7. 可擴展枚舉的擴展方法
- 8. 擴展類成員的擴展方法?
- 9. 使用擴展方法的擴展類
- 10. AutoMapper展開擴展方法
- 11. 擴展方法擴展靜態類
- 12. NativeScript擴展方法
- 13. 擴展方法ConvertAll
- 14. C#擴展方法
- 15. XElement.Elements()擴展方法?
- 16. GraphicsPath.IsClockWise()擴展方法
- 17. 擴展方法2.10.8.1
- 18. 擴展attach()方法?
- 19. C# - 擴展方法
- 20. VB.NET擴展方法
- 21. 在擴展方法
- 22. 擴展類方法
- 23. ValueProvider.GetValue擴展方法
- 24. C#擴展方法
- 25. 官方LINQ擴展方法
- 26. linq2entities的IQueryable擴展方法
- 27. SqlDataReader的擴展方法?
- 28. 的String.Format擴展方法
- 29. LINQ的擴展方法
- 30. golang的擴展方法?
首先,您需要更具體一點,您的意思是您想要一個流有一個擴展鏡像的功能http://msdn.microsoft.com/en-us/library/baketfxw.aspx – Seph
@Seph;我想爲Stream編寫一個.net擴展方法。你給的鏈接是字符串。 – Faisal