小编Zeo*_*os6的帖子

Fortran90到C#转换问题

我正在将一些Fortran90代码转换为C#.我对Fortran77有一些了解,但对Fortran90不熟悉.我遇到了以下代码行,我不确定如何翻译.

C1 = real(product((/(-1,i1=1,m-1)/))*product((/(i1,i1=2,m)/)))
Run Code Online (Sandbox Code Playgroud)

我认为这应该转换为:

int product1 = -1; int product2 = 1;
for (int i1 = 1 ; i1 <= (m-1); i1++)
{
    product1 *= -1;
}
for (int i2 = 2, i2 <= m; i2++)
{
    product2 *= i2;
}
float C1 = (float)(product1 * product2);
Run Code Online (Sandbox Code Playgroud)

我的不确定性源于这样一个事实:存在一个隐含的do循环结构用于初始化数组; 即

A = (/2*I, I = 1,5/)
Run Code Online (Sandbox Code Playgroud)

但我从来没有见过Fortran声明中使用的"产品"这个词.我知道有一个称为PRODUCT的矢量或矩阵乘法的内在函数,但"产品"不是我正在使用的代码中的数组,并且内在函数PRODUCT的语法使用MASK,因此我的声明显然不使用此函数.

任何见解或帮助将不胜感激.谢谢.

c# fortran fortran90

5
推荐指数
1
解决办法
761
查看次数

C#异常捕获使用try..catch块

我是C#的新手,希望更好地理解异常捕获.这些问题可能是愚蠢的菜鸟问题.它们对我很重要,我提前道歉.

例如,在System.IO Path类GetFullPath中,可以抛出五个异常:ArgumentException,SecurityException,ArgumentNullException,NotSupportedException和PathTooLongException.我知道必须组织catch块,以便首先捕获最具体的异常,最后捕获最常见的异常.

问题1:当MSDN提供有关类抛出的可能异常的信息时,如何知道哪个异常最具体,哪个异常最少?换句话说,如何从MSDN给我的最具体到最不具体的特定顺序来确定?

问题2:我是否需要明确地捕获所有异常,或者仅使用最大的generaL异常捕获所有其他异常?例如,仍然使用Path类,我需要做...

try { ... }
catch(System.ArgumentNullException ane) { ... }
catch(System.NotSupportedException nse) { ... }
catch(System.IO.PathTooLongException ple) { ... }
catch(System.IO.SecurityException se) { ... }
catch(System.ArgumentException ae) { ... }
Run Code Online (Sandbox Code Playgroud)

或者简单......

catch(System.ArgumentException ae) { ... }
Run Code Online (Sandbox Code Playgroud)

赶上所有例外?

问题3:在bool方法中执行以下操作是否是正确的语法结构...

try
{
  ... ;
  return true;
}
catch(System.ArgumentException ae)
{
  ... ;
  return false;
}
Run Code Online (Sandbox Code Playgroud)

c# exception-handling block try-catch

3
推荐指数
1
解决办法
9294
查看次数

标签 统计

c# ×2

block ×1

exception-handling ×1

fortran ×1

fortran90 ×1

try-catch ×1