Tag: 类型

C# – 命名空间中的类型声明

什么可能是在命名空间中声明类型但不在类中声明类型的可能用法。 例如: namespace Test { public delegate void Ispossible(); } 这是有效的,不会产生任何编译错误,但我想不出为什么我们会这样声明它而不是在类中。

检查对象是否与给定列表中的任何类型匹配的替代方法

if (this.Page is ArticlePage|| this.Page is ArticleListPage) { //Do something fantastic } 上面的代码是有效的,但考虑到可能有很多不同的类,我想比较this.Page to,我想将类存储在列表中,然后在列表上执行.Contains() 。 我怎么做到这一点? 我会以某种方式使用GetType()吗? 我可以存储一个Page对象列表,然后以某种方式比较这些类型吗? 注意:您可以假设我正在比较this.Page所有类以扩展Page 。

没有显式键的匿名类型的语法(`new {identifier}`)?

在这个问题中,我看到了一个匿名类型表达式,其中包含一个不熟悉的语法: new { MyObjectID = g.Key, totalSum } 起初我认为它( , totalSum } )是一个语法错误,因为没有指定键,但它编译并在C#3.0中工作。 我在LINQPad(2.x – > C#3)中validation了这种语法: var y = “:-)”; var q = new { Y = y, y, y.Length, }; q.Dump(); 结果: (anon type) { Y = “:-)”, y = “:-)”, Length = 3 } 规范中的哪个位置定义了这种语法? (答案应包括适用的参考资料和适当的摘录。) 并且,更主观(随意不回答),省略键是否是一个好的语法/捷径? 到目前为止,我还没有使用它,我不知道它,我不是很迷恋那个语法糖。

System.Object的BaseType应该与接口相同吗?

摘要 typeof(ISomeInterface).BaseType为null ; typeof(object).BaseType根据定义也为null 。 从而: typeof(object).BaseType==typeof(ISomeInterface).BaseType -> true 它(语义上)可能意味着System.Object也是一个接口,不是吗? 在c#中,所有类都inheritance自System.Object ,但接口不inheritance。 接口实际上是契约,而不是任何类的基类型,并且只能从其他接口派生。 所以我想知道typeof(object).BaseType是否应该与接口相同? 说明 我认为这是基本的数学逻辑。 我将null视为0 ,将typeof(object)视为1 ,因此查找某种类型的基类型就像查找数字的因子一样。 在这种假设下, null可以是任何类型的推导,例如0是任意数的因子的倍数。 而typeof(object)将是任何类的基本类型,例如1是任何数字的因子甚至本身。 然而, typeof(object).BaseType的实际返回null打破了这个假设。 这似乎是说0是因子1而不是任何其他数字。 此外,如果我们使用一种方法递归地查找SomeType的基类型,我们不能总是说SomeType不是一个类,因为它的BaseType为null , typeof(object).BaseType也为null 。 如果这似乎是矛盾的 typeof(object).BaseType==typeof(object) -> true 提出它的基本类型本身,但实际上并不是实体和合同之间的区别? 更新: 我最初说过: 它可能意味着System.Object也是一个接口,不是吗? 我想说的是它似乎很困惑 。 这是表达不佳的描述的错误,并且很抱歉导致答案集中于此。

如何确定.NET中的数据类型有多大?

我想加深对数据类型的理解,并想知道如何确定数据类型的大小。 我希望通往答案的旅程能够揭开其他未知数。 我知道在.NET中,一个字节是一个8位无符号整数,但这只是因为我读过它。 如果我有一个非常简单的控制台应用程序,如下所示: static void Main(string[] args) { byte b = 1; } 我怎么能在Visual Studio中告诉’b’的数据结构有多大? 我看到有一些内存诊断窗口,但它只是说当我跳过b的分配时,他们无法评估表达式。 我打开了Disassembly窗口,可以看到mov op … mov dword ptr [ebp-40h],1 ……但不确定信息的含义。 我认为dword暗示大小,也许ptr ebp-40h指向一个地址。 有没有办法可以在Visual Studio中查看所有地址,也可以通过查看范围来收集大小? 我知道在这样一个简短的论坛中回答这些问题很难,但感谢您的帮助。

从CLR样式类型的全名获取C#样式类型引用

给定通过reflection找到的.NET类型对象,是否可以将此类型打印或反编译为C#声明,同时考虑C#类型别名等? 例如, Int32 -> int String -> string Nullable -> int? List -> List 我希望能够打印出与源中最初编写的方法相近的方法。 如果.NET框架中没有任何内容,是否有第三方库? 我可能会看看ILSpy 。

如何确定Type是否为struct?

给定一个具有Type属性的PropertyInfo实例,如何确定它是否为struct? 我发现有一些属性,如IsPrimitive , IsInterface等,但我不知道如何要求结构? 编辑:澄清问题。 假设我有一个方法: public Boolean Check(PropertyInfo pi) { return pi.Type.IsStruct; } 我怎么写而不是IsStruct ?

C ++数据类型与C#数据类型

作为一名学习C ++的专业C#程序员,我想保持数据类型与C#相同。 我写了一个应该有用的头文件。 我想知道的是它是否正确。 // boolean //#DEFINE bool char //#DEFINE true 0x01 //#DEFINE false 0x00 // 8-bit integers #DEFINE byte unsigned char #DEFINE UInt8 unsigned char #DEFINE Byte unsigned char #DEFINE sbyte char #DEFINE Int8 char #DEFINE SByte char // 16-bit integers #DEFINE ushort unsigned short int #DEFINE UInt16 unsigned short int #DEFINE short short […]

当前类型是一个接口,无法构造。 你错过了类型映射吗?

我有一个控制器类,它负责双击命令,然后调用一个弹出窗口给用户的方法。 就像是 : var popup = container.GetService(); 在上面的行中,它抛出一个错误:当前类型PopupCommand.IPopupDataHandler是一个接口,无法构造。 你错过了类型映射吗? 我更新了包含container.GetService()方法的DLL,之前它曾经工作正常。 我尝试在谷歌搜索,但类似的问题与Unity更相关,我怀疑我的问题是否与Unity有关。

通用类型转换方法(.Net)

我正在尝试创建一个通用的方法来投射一个对象,但似乎无法破解那个栗子。 (现在是星期五下午3点,这是漫长的一周) 好的,所以我有这个场景: // We have a value (which .net sets as a double by default) object obj = 1.0; // We have the target type as a string, which could be anything: // say string sometType = “System.Decimal” Type type = Type.GetType(someType); // I need a generic way of casting this object castedObj = […]