循环作为表达

时间:2014-05-18 05:15:22

标签: c# .net loops

我遇到的事情往往是有用的,如果它存在,我想知道它。我不确定如何解释它来搜索它,但它基本上是一个单行循环语句 - 类似于lambada。这不是最好的例子(没有这个就是一个简单的解决方案),但当我决定最终提出这个问题时,我想到的是什么。但这就是我所说的那种。

(以下是我的想法。我问的是否存在类似情况)

在我目前的情况下,我正在将字符串转换为字节数组以写入流。我希望能够这样做来创建字节数组:

    byte[] data = String ==> (int i; Convert.ToByte(String[i]))

其中i是字符串中基于它的长度的数字,下一行是项目的输出。

2 个答案:

答案 0 :(得分:6)

  1. 您应该阅读LINQ。

  2. 您的代码可以写成:

    var String = "some string";
    byte[] data = String.Select(x => Convert.ToByte(x)).ToArray();
    

    甚至是方法组:

    byte[] data = String.Select(Convert.ToByte).ToArray();
    

答案 1 :(得分:-1)

除非服务器或客户端(无论其他方面是什么)强制您仅使用ASCII或8位字符,否则我建议不要使用 Convert.ToByte(char)< / em>的。对于数值> 1的任何字符。 255, Convert.ToByte(char)将抛出异常。

相反,要从字符串中获取字节数组,请使用以下内容:

string myString = ...some string data...
byte[] bytes = Encoding.UTF8.GetBytes(myString);

以及&#39;其他&#39;连接的一端,做这样的事情将字节数组转换回字符串:

byte[] byteData = ...the received byte data...
string s = Encoding.UTF8.GetString(byteData);


此方法没有Convert.ToByte(char)byte b = (byte) myChar;具有的字符限制。