Tag: 类型

如何/为什么值类型可以从引用类型派生?

在.NET ,所有值类型都从名为System.ValueType的类inheritance。 System.ValueType是一个类,因此它是一个reference type 。 我的问题是value type如何以及为什么可能从reference type派生?

通过c#中的reflection获得’基本’数据类型而不是奇怪的可空类型

我的基本需求是从LINQ to SQL查询生成的匿名类型中获取数据类型。 我有一段代码(比我能写的更聪明,因为我还没有深入研究过reflection)从匿名类型中返回数据类型,并且在linq2sql属性中标记为’not nullable’的元素非常有效。 所以,如果我有一个字符串,它将作为System.String返回。 但是,当元素可以为空时,我最终会得到它的“全名”: {Name =“Nullable 1″ FullName = “System.Nullable 1 [[System.Decimal,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]”} 在这种情况下,我想要提取的是System.Decimal类型(在字符串或其他情况下,我只想要System.String)。 我查看了属性,找不到任何似乎存储它的东西。 private static Dictionary GetFieldsForType(IEnumerable data) { object o = data.First(); var properties = o.GetType().GetProperties(); return properties.ToDictionary(property => property.Name, property => property.PropertyType); } LINQ查询(我认为这不重要): var theData = from r in db.tblTestEdits select new […]

如何确定两个对象的类型是否兼容?

我有一个通用的function,我想知道如何写。 List something; public int countItems(List Items) { // Here I would like to compare the type of “Items” with the type of “something” to see if they are compatible. How do I do it? return 0; }

使用对象类型的字符串名称在c#中键入cast

我有以下代码,应该很容易通过 public class Foo { public void FooHasAMethod() { Console.WriteLine(“it is me, foo!!!”); } } public class Bar { public Foo FooProperty { get; set; } } public class FooBar { public static void Main() { Bar bar = new Bar{ FooProperty = new Foo() }; CallPropertyByName(bar, “Foo”); } public static void CallPropertyByName(Bar bar, string […]

如何使用OfType 过滤到generics类型的所有变体

我想使用List使用它们的类型过滤List对象。 我的问题是,某些对象属于通用接口类型,但它们没有自己的公共inheritance接口。 我有以下定义: public interface ISeries public interface ITraceSeries : ISeries public interface ITimedSeries : ISeries //and some more… 我的列表包含各种ISeries ,但现在我想只获取ITraceSeries对象,无论它们实际定义的generics类型参数如何,如下所示: var filteredList = myList.OfType<ITraceSeries>(); //invalid argument! 我怎样才能做到这一点? 一个不受欢迎的解决方案是引入一个inheritance自ISeries的类型ISeries : public interface ITraceSeries : ITraceSeries 然后,使用ITraceSeries作为filter。 但这并没有真正添加新信息,只会使inheritance链更复杂。 在我看来,这似乎是一个常见问题,但我没有在SO或网络上找到有用的信息。 感谢帮助!

C#中的hex表示法和有符号整数

这是一个后续问题 。 所以,Java商店的整数是两个补码 ,你可以做到以下几点: int ALPHA_MASK = 0xff000000; 在C#中,这需要使用无符号整数uint ,因为它将其解释为4278190080而不是-16777216 。 我的问题是,如何在c#中以hex表示法声明负值,以及内部表示的整数究竟是如何? 这里与Java有什么不同?

什么是积分类型?

研究了交换机文档并发现它只能切换我设置的关于寻找定义的整体类型 。 我找不到任何地方。 我只能找到整数类型的列表 。 我可以猜测整数类型是整合到语言中的类型,但是我会对正确的定义感到满意。 有人有吗?

派生类型的通用基类

我有以下代码。 class Header where T: IItem { } class HeaderA : Header { } class HeaderB : Header { } interface IItem { } class ItemA : IItem { } class ItemB : IItem { } Header h = new HeaderA(); 最后一行无法编译。 Cannot implicitly convert type ‘UserQuery.HeaderA’ to ‘UserQuery.Header’ HeaderA是Header的子类型,ItemA是IItem的子类型。 为什么它不起作用?

使用reflection获取类型

我正在尝试使用reflection获取我的类的属性类型,但它返回我唯一的RuntimePropertyInfo – 作为类型的名称。 我有对象MyObject actualData – 它包含属性 – “name”作为字符串,“Item”作为我的类型DatumType 当我调试时,我可以看到,actualData有2个属性,第一个是字符串类型,第二个是DatumType,但是当我使用它时: string typeName = actualData.getType().getProperty(“Item”).getType().Name – 它返回RuntimePropertyInfo,而不是DatumType 你能看出我做错了什么吗? 我正在使用C# – .Net 4.0。 非常感谢!

‘typeof’如何运作?

我很好奇C#中typeof的“方法体”是什么样的(非常确定我无法在reflection器中找到它,因为它是关键字而不是方法)。 我猜它相当于GetType( 魔术转换符号到字符串 )。 在Reflector中查看GetType(字符串),它调用一个方法“PrivateGetType”,它调用“RuntimeTypeHandle.GetTypeByName”,而RuntimeTypeHandle似乎在其中有很多类型的逻辑,但GetTypeByName的东西没有显示在Reflector中。