Tag: 原始types

C#中“var”和“object”的区别

vartypes是否等价于VB中的Variant ? 当object可以接受任何数据types时,这两者有什么区别?

结构 – 真实生活的例子?

在处理C#中的Structs和Classes之间的区别以及何时使用C#中的任何一个问题上,都有许多问题。 (一个句子的答案:如果你需要价值语义,则使用结构)。有很多关于如何select其中一个的指导方针,其中大部分归结为:使用一个类,除非你满足这些特定的要求,然后使用一个结构。 这一切都对我有意义。 但是,我似乎无法find任何在系统中使用结构的人的真实例子。 我是(半)C#的新手,我很难想象一个具体的情况,结构是真的是正确的select(至less,我还没有遇到过)。 所以,我转向这个世界的大脑。 有些情况下,你真的在​​一个系统中使用了一个类没有工作的结构?

结构可以包含引用types的字段

结构可以包含引用types的字段吗? 如果可以的话,这是一个不好的做法?

typeof和is关键字有什么区别?

这两者之间的确切区别是什么? // When calling this method with GetByType<MyClass>() public bool GetByType<T>() { // this returns true: return typeof(T).Equals(typeof(MyClass)); // this returns false: return typeof(T) is MyClass; }

咖喱霍华德同构

我已经在互联网上search了一遍,我也找不到任何关于“气”的解释,这些解释并没有迅速退化成一个逻辑理论的演讲,而这个逻辑理论在我的脑海中已经大打折扣了。 (这些人认为“直觉主义演算”是一个实际上对于正常人来说意味着什么的短语!) 粗略地说,CHI说types是定理,程序是这些定理的certificate。 但是这到底意味着什么呢? 到目前为止,我已经明白了这一点: 考虑一下id :: x -> x 。 其types表示“鉴于X是真实的,我们可以得出结论X是真实的”。 对我来说似乎是一个合理的定理。 现在考虑foo :: x -> y 。 正如任何Haskell程序员会告诉你的,这是不可能的。 你不能写这个函数。 (好吧,无论如何都不要作弊。)读作为一个定理,它说“假设任何X是真的,我们可以得出结论,任何Y是真的”。 这显然是无稽之谈。 而且,果然,你不能写这个function。 更一般地说,函数的论点可以被认为是“被假定为真的”,结果types可以被认为是“假设所有其他事物都是真的”。 如果有一个函数论证,比如说x -> y ,那么我们可以把这个假设看作X是真的,这意味着Y必须是真的。 例如, (.) :: (y -> z) -> (x -> y) -> x -> z可以被认为是“假设Y意味着Z,X意味着Y,并且X是真实的,我们可以得出结论Z是真的“。 这对我来说似乎是合情合理的。 现在,究竟是什么Int -> Int意思是? O_O 我可以想到的唯一明智的答案是:如果你有一个函数X – > Y – > Z,那么types签名表示“假设可以构造一个Xtypes的值,另一个types为Y,那么有可能构造一个Z型的值“。 […]

为什么在java中的构造函数没有返回types?

可能重复: 为什么构造函数不返回值 为什么构造函数没有返回types,甚至没有void? 这是什么原因?

testing一个不能编译的断言

问题 当我使用支持types级编程的库时,我经常发现自己写下如下的评论(从Paul Snively在Strange Loop 2012上提供的例子 ): // But these invalid sequences don't compile: // isValid(_3 :: _1 :: _5 :: _8 :: _8 :: _2 :: _8 :: _6 :: _5 :: HNil) // isValid(_3 :: _4 :: _5 :: _8 :: _8 :: _2 :: _8 :: _6 :: HNil) 或者,从无形存储库的一个例子 来看 : /** […]

在SQL Server中更改用户定义的表types

如何在SQL Server中更改用户定义的表types?

为什么我的C#数组在input对象时会丢失types符号信息?

调查一个错误,我发现这是由于这种奇怪的C#中: sbyte[] foo = new sbyte[10]; object bar = foo; Console.WriteLine("{0} {1} {2} {3}", foo is sbyte[], foo is byte[], bar is sbyte[], bar is byte[]); 输出是“True False True True”,而我期望“ bar is byte[] ”返回False。 显然bar是byte[]和sbyte[] ? 其他有符号/无符号types,如Int32[] vs UInt32[] ,但不是说Int32[] vs Int64[] 。 任何人都可以解释此行为? 这是在.NET 3.5中。

具有通用参数types的函数

我想弄清楚如何定义一个函数,适用于多种types的参数(如int和int64)。 据我了解,函数重载是不可能在F#(编译器肯定抱怨)。 以下面的function为例。 let sqrt_int = function | n:int -> int (sqrt (float n)) | n:int64 -> int64 (sqrt (float n)) 编译器当然抱怨语法是无效的(模式匹配中的types约束似乎不被支持),但我认为这说明了我想实现的function:一个函数在多个参数types上运行,并返回一个值types。 我有一种感觉,这是可能的在F#使用genericstypes/types推理/模式匹配的一些组合,但语法躲过了我。 我也尝试使用:? 运算符(dynamictypestesting)和模式匹配块中的子句时 ,这仍会产生各种错误。 由于我对这门语言比较陌生,所以我很可能会在这里做一些不可能的事情,所以请让我知道是否有其他解决办法。