编译错误:只能将赋值,调用,递增,递减和新对象表达式用作语句

时间:2016-11-23 15:02:20

标签: c#

string cipherData;
byte[] cipherbytes;
byte[] plainbytes;
byte[] plainbytes2;
byte[] plainkey;

SymmetricAlgorithm desObj;
private void button1_Click(object sender, EventArgs e)
{
    cipherData = textBox_Plain_text.Text;
    plainbytes = Encoding.ASCII.GetBytes(cipherData);
    plainkey = Encoding.ASCII.GetBytes("123456789abcdef");
    desObj.Key = plainkey;
    // choose other appropriate modes (CBC, CFB, CTS, ECB, OFB)
    desObj.Mode = CipherMode.CBC;
    desObj.Padding = PaddingMode.PKCS7;
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    CryptoStream cs = new CryptoStream(ms, desObj.CreateEncryptor(), new CryptoStreamMode());
    cs.Write(plainbytes, 0, plainbytes.Length);
    cs.Close;
    cipherbytes = ms.ToArray();
    ms.Close;
    textBox_Encrypted_text.Text = Encoding.ASCII.GetString(cipherbytes);
}
  

错误:仅分配,调用,递增,递减和新对象   表达式可以用作语句。

1 个答案:

答案 0 :(得分:2)

  

只能将赋值,调用,递增,递减和新对象表达式用作语句。

文档说明statement

  

程序采取的操作以语句表示。常见操作包括声明变量,赋值,调用方法,循环集合以及分支到一个或另一个代码块,具体取决于给定条件

您的基本问题是您错过了( )括号,这些括号将告诉编译器您要在这些行中调用方法:

cs.Close;
ms.Close;

所以将它们改为:

cs.Close();
ms.Close();

否则编译器会认为您尝试访问字段或属性,并告诉您这不能单独作为语句。正如错误消息所述,您可以执行以下任一操作:

  

分配,

int c = ms.Capacity;
  

致电

ms.Close();
  

递增,递减

ms.Capacity++;
  

新对象表达式

new MemoryStream();