这是BCL设计的一部分,让我想起了一段时间.我发现它有点反直觉,我没有看到Process和例如Debug和Trace类之间的连接.
在.NET 4 beta 2中,有一个新的Numerics命名空间 struct BigInteger.该文件指出,这是一个不变的类型,因为我本来期望.
但我对后增量运算符(++)有点困惑.这种defintely似乎改变了价值.以下while循环有效:
static BigInteger Factorial(BigInteger n)
{
BigInteger result = BigInteger.One;
BigInteger b = BigInteger.One;
while (b <= n)
{
result = result * b;
b++; // immutable ?
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这就是MSDN对Increment运算符的看法:
因为BigInteger对象是不可变的,所以Increment运算符创建一个新的BigInteger对象,其值比value表示的BigInteger对象多一个.因此,重复调用Increment可能很昂贵.
一切都很好,我会理解,如果我必须使用, b = b++但显然++本身就足以改变一个价值.
有什么想法吗?
编辑:
正如Lasse所指出的那样,对增量后工作的方式有一个逐步的说明.但这仍然似乎与不变性有关.例如,我无法想象使用此运算符是线程安全的.
我想从XML XSD Schema生成一个类,就像使用Xsd.exe工具一样.
例如 XSD.exe /namespace:Generated.Xsd_1 /classes /outputdir:..\Classes
有没有办法通过使用.NET Framework中的类而不是使用独立工具来实现此目的?
我想基于类生成XML Schema,就像使用Xsd.exe工具一样.
例如 xsd.exe /type: typename /outputdir:c:\ assmeblyname.
有没有办法通过使用.NET Framework中的类而不是使用独立工具来实现此目的?
我确信我已经看到有关任务引用或类似信息的信息 - 即程序化的东西 - 可用于代替某些独立实用程序,或者某些独立实用程序通过FCL或Microsoft API获取其功能.
我有许多EventArgs类,只有一个字段和一个适当的属性来读取它:
public class SomeEventArgs : EventArgs
{
private readonly Foo f;
public SomeEventArgs(Foo f)
{
this.f = f;
}
public Foo Foo
{
get { return this.f; }
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何内置的泛型类来实现这样的行为,或者我必须自己滚动?
public class GenericEventArgs<T> : EventArgs
{
private readonly T value;
public GenericEventArgs(T v)
{
this.value = v;
}
public T Value
{
get { return this.value; }
}
}
Run Code Online (Sandbox Code Playgroud)
PS我在Microsoft Connect上写了一个建议
drake 用于碰撞检测的库与 FCL 不同(https://github.com/flexible-collision-library/fcl)?Drake碰撞检测是基于FCL的吗?或者我可以在哪里找到差异?
我可以使用FCL来获取球体和盒子之间的接触力吗?或者德雷克能实现吗?
非常感谢!
我一直面临的一个问题是.NET Framework类库的实现.
我知道一些原始实现的方法:
例如 :
MessageBox.Show("...");
Run Code Online (Sandbox Code Playgroud)
据我所知,这个方法必须使用P/Invoke来调用Win32 API.
但是像这样:
System.Convert.ToInt32(mystr);
Run Code Online (Sandbox Code Playgroud)
我实际上不知道它是如何工作的,因为在纯C#中不可能在int和string之间进行转换.(你可以在不使用该方法的情况下做同样的事情吗?实际上我不知道).
最后,如果您知道答案,请在第二个例子中为我澄清这些概念.
fcl ×7
.net ×6
c# ×3
xsd.exe ×2
biginteger ×1
drake ×1
events ×1
generics ×1
immutability ×1
namespaces ×1
pinvoke ×1