LinqPad 4中缺少Observable参考?

LinqPad 4中缺少Observable参考?

问题描述:

我在LinqPad 4中尝试了下面的测试,并得到了“Observable not in context”错误。 IEnumerable分支有效,奇怪的是,我没有为IObservable本身获取错误,只是为了静态方法Observable.Range。LinqPad 4中缺少Observable参考?

static void Main() 
{ 
IEnumerableSieve(); 
IObservableSieve(); 
} 

private static void IEnumerableSieve() 
{ 
IEnumerable<int> oddsFrom3 = IntsFrom(3, 2); 
List<int> cache = new List<int>() { 2 }; 

IEnumerable<int> primes = oddsFrom3. 
    Where(candidate => cache.TakeWhile(prime => prime * prime <= candidate). 
    Where(trialDivisor => candidate % trialDivisor == 0).Count() == 0); 

Console.WriteLine("IEnumerable oddsFrom3:"); 
foreach (int p in primes.Take(20)) 
{ 
    Console.WriteLine("{0}", p); 
    cache.Add(p); 
} 
} 

private static void IObservableSieve() 
{ 
const int bigMax = 1 << 30; 

// Generate the candidates as observables, cache the primes in an IEnum list as before. 
// But it's TERRIBLE that the cache is now of a different TYPE than the thing it's caching. 
// The cache is IEnumerable, and the thing it's caching is an IObservable. 

IObservable<int> oddsFrom3 = Observable.Range(3, bigMax).Where(i => i % 2 == 1); 
List<int> cache = new List<int>() { 2 }; 

IObservable<int> primes = oddsFrom3. 
    Where(candidate => cache. 
    TakeWhile(prime => prime * prime <= candidate). 
    Where(trialDivisor => candidate % trialDivisor == 0).Count() == 0); 

Console.WriteLine("IObservable oddsFrom3 "); 

primes.Take(20).Subscribe(p => { Console.WriteLine("{0}", p); cache.Add(p); }); 
} 

static IEnumerable<int> IntsFrom(int i, int increment) 
{ 
while (true) 
{ 
    yield return i; 
    i += increment; 
} 
} 

任何提示?

我找到了。 LinqPad中的F4提供了一个Add-reference对话框,并且从那里一切正常。