C#相当于perl的$ _

时间:2012-11-15 20:00:33

标签: c# perl

是否有与Perl的$_功能相同的功能?我正在用C#重写一些旧的perl脚本,我从来没有学过任何perl。下面是我想弄清楚的一个例子

sub copyText {
        while($_[0]){
            $_[1]->Empty();
            $_[0] = $_[1]->IsText();
            sleep(1);
         }

2 个答案:

答案 0 :(得分:11)

首先,$_不是函数。它只是一个普通的变量(恰好被很多内置函数读取和更改)。

其次,您发布的代码不使用$_。它正在访问@_的元素,即参数列表。

您发布的代码的更易读的版本将是:

sub copyText {
   my ($arg1, $arg2) = @_;
   while ($arg1) {
      $arg2->Empty();
      $arg1 = $arg2->IsText();
      sleep(1);
   }

   $_[0] = $arg1;   # arg1 is passed by reference
}
  • arg1是通过引用传递的布尔值。
  • arg2是某种对象,其方法名为Empty,其中一个名为IsText

对不起,我不知道C#,但希望你能继续这样做。

答案 1 :(得分:0)

  

Perl的$_函数

这不是一个功能。这是代词'意思'。

还有另一个特殊变量@_,这是一个代词,意思是'他们'。

C#中没有类似的东西。