C#中的泛型编程!(0分)

  • 主题发起人 主题发起人 七宗罪
  • 开始时间 开始时间

七宗罪

Unregistered / Unconfirmed
GUEST, unregistred user!
微软的.net推出了这么长时间,而且微软的MSR也推出了支持泛型编程的CLI,不知道
富翁们,有没有感兴趣的,欢迎大家讨论。
using System;
namespace GenericExample
{
abstract class E<R>
{ // R = result type
abstract public R eval();
}
class Lit<R> : E<R>
{
private readonly R v;
public Lit(R v)
{
this.v = v;
}
public override R eval()
{
return v;
}
}
abstract class Bin<S,R> : E<R>
{ // S = subexpr type;
R = result type
protected readonly E<S> e1, e2;
public Bin(E<S> e1, E<S> e2)
{
this.e1 = e1;
this.e2 = e2;
}
}
class Add : Bin<int,int>
{
public Add(E<int> e1, E<int> e2) : base(e1, e2) { }
public override int eval()
{
return e1.eval() + e2.eval();
}
}
class Eq<S> : Bin<S,bool>
{ // S = subexpr type
public Eq(E<S> e1, E<S> e2) : base(e1, e2) { }
public override bool eval()
{
return e1.eval().Equals(e2.eval());
}
}
class And : Bin<bool,bool>
{
public And(E<bool> e1, E<bool> e2) : base(e1, e2) { }
public override bool eval()
{
return e1.eval() &amp;&amp;
e2.eval();
}
}
// Exercising the encoding
class Phantom
{
// Build the expression n + ... + 1 + 0
static E<int> sum(int n)
{
if (n == 0)
return new Lit<int>(0);
else

return new Add(new Lit<int>(n), sum(n-1));
}
static void Main()
{
E<int> e1 = sum(40);
E<bool> e1Eq55 = new Eq<int>(new Lit<int>(55), e1);
E<bool> e1Ne55 = new Eq<bool>(new Lit<bool>(false), e1Eq55);
Console.WriteLine(e1.eval() + " " + e1Eq55.eval() + " " + e1Ne55.eval());
E<string> e2 = new Lit<string>("foo");
// typesafe, no confusion possible
}
}
}
 
这是第几个版本,在哪里能下.
 
关于泛型,我一直认为应该由处于程序级之上的知识级来完成,可惜,目前AI的水平似乎
还差了很多...
知识级
|
程序(符号)级
|
寄存器传送子级
|
逻辑电路级
|
电路级
|
设备级
 
现在发布的.net还不支持泛型,微软的MSR(Microsoft Research)发布了(2002年)一款
称为sscli(Shared Source Common Language Infrastructure)的SDK,下载以后,再下载
gyro,按照编译和安装说明编译以后就可以在C#的编译器上开发支持泛型的程序了,至于
何时才能在正式发布的.net开发环境里加入这一特性,MS并没有给出具体时间,但是相信
未来的.net肯定会支持泛型的。
 
我下载了 sscli 和 gyro,sscli 也编译了。
但运行 gyro 的 install_gyro.cmd 时出现中断,
提示:Gyro can only be installed over the second source release of the SSCLI
这里是产生该提示的脚本:
if not exist %2/readfirst.html (
echo %2/readfirst.html not found
echo Check that %2 is the root of an existing Rotor installation
gotodo
ne
)
find "What's New in the Second Source Release" %2/readfirst.html > tmp.txt
if errorlevel 1 (
echo Gyro can only be installed over the second source release of the SSCLI
del /F tmp.txt
gotodo
ne
)
del tmp.txt
可是我的readfirst.html文件里只有这样一段字符:
What's New in the Microsoft Shared Source CLI 1.0 Release
为什么我下载的sscli不符合gyro的要求?
我把这段script去掉,完成install_gyro.cmd的运行,行不行?
请教,我该如何安装?
 

Similar threads

后退
顶部