Tag: 类型

基类扩展的Visual Studio 2010编译器错误

我有一个ac#类提供了一些简单的类和一些基类扩展,比如这个… public static Boolean ToBooleanOrDefault(this String s, Boolean Default) { return ToBooleanOrDefault((Object)s, Default); } public static Boolean ToBooleanOrDefault(this Object o, Boolean Default) { Boolean ReturnVal = Default; try { if (o != null) { switch (o.ToString().ToLower()) { case “yes”: case “true”: case “ok”: case “y”: ReturnVal = true; break; case “no”: case “false”: case “n”: […]

存储变量类型并使用它在运行时创建集合

我有一个项目,它在SQL中存储值,然后检索它们进行分析。 为了跟踪可能存储的值类型,我创建了一个大致如下的类: private class DataField { public string FieldName; public string FieldType; } 在读取值进行分析时,使用switch语句如下(简化): switch (DataField.FieldType) { case “int”: List InputData = new List(); // Populate list from DB break; case “bool”: List InputData = new List(); // Populate list from DB break; } 我没有在多个地方维护代码,而是在寻找摆脱switch语句的方法,但这意味着我需要根据类型动态创建集合。 当前该类型是(天真地?)一个字符串,但我想我可以通过更改类来改进它: private class ImprovedDataField { public string FieldName; public Type […]

Assembly.GetType()和typeof()返回不同的类型?

假设您获得了一个由以下简单代码编译的Class.dll程序集: namespace ClassLibrary { public class Class { } } 并考虑使用上述Class.dll作为项目引用的不同项目,并使用以下代码: Assembly assembly = Assembly.LoadFrom(@”Class.dll”); Type reflectedType = assembly.GetType(“ClassLibrary.Class”); Type knownType = typeof(ClassLibrary.Class); Debug.Assert(reflectedType == knownType); 断言失败了,我不明白为什么。 如果我将ClassLibrary.Class替换为System.Text.RegularExpressions.Regex类和带有System.dll的Class.dll,断言会成功,所以我猜它与项目属性有关吗? 一些编译开关或许? 提前致谢

c#datatypes – > oracle数据类型

我喜欢在Oracle数据库中保存不同的c#数据类型(int,decimal,double,string,Guid,…)。 有没有人有一个表格显示要使用的oracle数据类型? 我找到了表格,显示了用于不同oracle数据类型的c#数据类型,但不是相反。

如何在Unity中检查游戏对象是否有组件方法?

我正在编写一个方法来检查gameObject是否有一个组件。 这里是: public static bool HasComponent (this GameObject obj) { return obj.GetComponent() != null; } 而我正在使用它: void Update() { if (Input.GetKey(“w”)) { if (gameObject.HasComponent()) { print(“Has a rigid body.”); return; } print(“Does not have rigid body.”); } } gameObject没有刚体,但它仍然打印它确实有。

C#和Oracle Number数据类型

我需要从Oracle数据库中读取一个值,并且该字段已声明为Number(38)。 我怎么能用C#做这个,因为Decimal类型不够大?

检查类型的最快方法是什么?

我决定在一个函数中检查类型,而不是将函数重载100次或为不同类型创建100个不同的比较器。 例如,我使用默认比较器来比较2个对象中的一组类型(基元和字符串)的值。 它包含以下代码: public class DefComparer : IComparer { public int Compare(object a, object b) { …. // a = a.GetType().GetField(field).GetValue(a); – not important for the question but I’m just showing that a&b below are different references switch (a.GetType().Name) { case “Byte”: if ((byte)a == (byte)b) return 0; else if ((byte)a > (byte)b) return 1; […]

如何在C#方法中识别每个参数类型?

我有一个C#方法说: MyMethod(int num, string name, Color color, MyComplexType complex) 使用reflection,我如何清楚地识别任何方法的每个参数类型? 我想通过参数类型执行一些任务。 如果类型是简单的int,string或boolean然后我做一些事情,如果它是Color,XMLDocument等我做其他事情,如果它是用户定义的类型,如MyComplexType或MyCalci等,那么我想做某些任务。 我能够使用ParameterInfo检索方法的所有参数,并可以遍历每个参数并获取它们的类型。 但是如何识别每种数据类型? foreach (var parameter in parameters) { //identify primitive types?? //identify value types //identify reference types } 编辑:这是我的代码的一部分,以创建一个属性网格排序页面,我想显示所选方法的数据类型的参数列表。 如果参数有任何用户定义的类型/引用类型,那么我想进一步展开它以显示数据类型下的所有元素。

最快的类型比较?

以下事件可能每帧被调用数百次。 public bool OnCollision(Body body1, Body body2) { if(body2.Tag is Dog) ((Dog)body2.Tag).Bark(); } 我知道使用“is”会导致演员表演,然后当我想用它做某事时,再次演出。 有没有更有效的方法来检查类型? 我做了一个控制台应用程序尝试“if(body2.Tag.GetType()== typeOf(Dog))”但它似乎比使用“是”更慢。 谢谢。

在不知道类型的情况下返回通用

我有一种情况,我有一个类,在其generics类型参数中接受某个对象类型的实例。 布局是这样的: public abstract BaseClass { … } public DiamondClass : BaseClass { … } public SilverClass : BaseClass { … } public Handler where T : BaseClass { … } 我希望能够创建一个方法来返回Handler或Handler的实例,而无需在输入时定义类型。 我试过这些方面的东西: public Handler GetHandler(HandlerType type) { switch(type) { case HandlerType.Diamond: return new Handler(); case HandlerType.Silver: return new Handler(); default: throw new InvalidOperationException(“…”); } […]