如何为变量值做一个类型安全的包装器
我正在使用所有这些值都由服务器存储为对象,然后当我获取它们时,我必须施放正确的值. 我知道我可以做以下操作: object tagValue = (object)"testing"; //this would be returned from a function rather than created this way!! var typedVariant = new TypedVariant(tagValue); string actualString = typedVariant.Value; typedvariant是这样的概括: class TypedVariant where T : class, struct { public TypedVariant(object variant) { Value = variant as T; } public T Valu
4 2024-04-26
编程技术问答社区
使用FastActivator来代替Activator.CreateInstance()。
尝试将此处显示的类用作激活剂的样本.Createinstance() http://codeblocks.codeplexs.codeplex.com/wikipage?title=fasteractivator = fasteractivator; public static List SortedCollection(SPListItemCollection items, ListSortType sortType, List votes) where T : IVotable { var returnlist = new List(); var functionCreator = FastActivator.GenerateFunc, T>>(); for (int i = 0; i
10 2024-04-26
编程技术问答社区
从列表和场景中删除最后一个实例化的游戏对象
所以我错过了某些人可能很简单的东西,但是我遇到了麻烦.我创建了一个列表(MSGSymbols),每次按下按钮时(基本上是自定义键盘)都会用新的GameObject填充,然后将其实例化为网格布局. 但是如何仅删除该列表上的最后一个GameObject并更新网格布局以反映该更改? (就像键入键盘上的背台按钮一样)?我当前拥有的删除密钥代码是投掷错误:grognal outofrangeException:参数超出范围.参数名称:索引 如何解决这个问题? public string prefabPath; List msgSymbols = new List(); Vector3 symbolPos = new Vector3(0, 0, 0); GameObject currentChar; GameObject msgPanel; Vector3 symbolScale = new Vector3(1.0f, 1.0f,
4 2024-04-26
编程技术问答社区
值类型与引用类型的实例化和初始化
int number = new int(); 问题: 对于参考类型, new 运算符通过在堆上分配内存,然后通过调用类型的构造函数来创建该类型的实例.如上所述,您可以为价值类型做同样的事情.对我来说,上面的行表示构造函数int()被调用以用值初始化 number .我已经读到,int是指向struct system.int32 的关键字.因此,在Visual Studio中,我导航到struct INT32.瞧,没有构造函数.该预定义的类型如何在没有构造函数的情况下初始化为0? 与上述有关 对于自定义结构和类,我都可以使用 new 关键字创建新实例,而没有结构或类实际包含构造函数.在这种情况下,在结构/类所包含的所有字段中都没有进行初始化?是否唯一将内存分配在堆栈/堆上的情况是值/参考类型? 最后,对于价值类型,实例化和初始化需要NO 新的关键字.这是如何在较低级别上起作用的?说我们做 int number = 5; .它是否以某种方式翻译成 int a =
14 2024-04-25
编程技术问答社区
如何向方法传递一个包含某些属性的自定义类未知对象的列表?
我正在制作一个数据库helper类,其中包括访问SQLCE数据库的方法.我想使用相同的方法使用包含匹配不同表中字段的属性的不同类读取行.要使用的类是在运行时确定的,我想通过一个从类上到该方法的对象的列表,并获取属性名称并使用它们来读取数据库.会很方便,因为我可以将其用于所有(SQLCE-)数据库. (我更新了错误的代码以便在此处提供解决方案) #region ReadData ///---------------------------------------------------------------------- /// /// Reads datarows from database and adds them to list. /// /// List containing objects with properties.
10 2024-04-25
编程技术问答社区
指定的值不用于任何执行路径-C#
resharper显示此警告:当我编写以下代码时,"分配的值不使用任何执行路径": List testObj = new List(); testObj = testMethod(); 在这里testMethod()返回类型List.但是,当我直接分配testMethod()而无需实例化时,我不会收到警告. List testObj = testMethod(); 请原谅我的无知,如果我错过了基础知识,但我不关注编译器如何在不实例化的情况下为testObj分配内存. 其中一篇帖子是指类似的问题: 解决方案 您正在第一行中创建List的实例.然后,通过分配testObj变量,将此对象丢弃了另一个从方法testMethod返回的值.此new List()对象是多余的.您有效地创建了垃圾收集器必须在某个时候清洁的垃圾. 这就是为什么要向您发出警告的原因. 如果您可以在定义变量的同一行中使用
18 2024-04-25
编程技术问答社区
奇怪的数值引用
我今天遇到了一个问题,这已经发生了几次.我有我的对象的通用列表: List ObjectList = new List(); 我决定从列表中获得Classes.Object.GameObject的实例: Classes.Object.GameObject TempObject = new Classes.Object.GameObject; TempObject = ObjectList[10]; 直到这里一直有效,但是当我对tempobject进行一些更改时,列表中的索引对象也提到了更改!我的意思是对象列表[10]将通过更改tempobject进行更改.根本没有参考.也许我不太了解OO编程. 亲爱的主持人,您在编辑我的语法时犯了一个错误! (您更改为直到) 解决方案 如果您想更改TempObject对其列表上的"原始版本"而没有影响.在 C#中的
0 2024-04-24
编程技术问答社区
从变量中实例化通用类型
我想实例化一个新对象,其中类型和通用类型被定义为变量.最终结果看起来像是在此处手动创建的newListoFobject: var newListOfObjects = new List(); 其中TabViewModel是以下对象: public class TabViewModel { public string Title { get; set; } public int TabOrder { get; set; } } 试图仅使用变量实例化新对象时,问题就会出现.我们有一个通用类型变量,即通用类型,它是一个接口和一个类型参数列表,listoftypeargs.在上面的示例中,通用类型将是iList,参数将是TabViewModel.然后看起来像以下(注意,某些代码是PSUDO,以便于理解): Type genericType = IList'1; Type[] listOfTypeArgs = TabViewMo
4 2024-04-23
编程技术问答社区
从另一个类中访问实例化的对象-c#
我有一个玩家class,npc class,battlemanager class和game class. 玩家类商店/获取/设置玩家统计数据,例如健康,耐力,水平,经验. NPC相似,但适用于NPC.游戏class实例化播放器class和NPC class.游戏玻璃有两个游戏,战斗和非战斗. 当玩家参加战斗时,游戏机进行战斗,战斗结束时,它将转向非战斗. 我要做的是让BattleManager class管理NPC和播放器之间的战斗,但是,由于玩家和NPC对象是在游戏类中实例化的,我需要知道如何通过该对象或访问该对象或访问它来自BattleManager而不实例化新的. 任何人都可以提出一般性的流动方式吗?我知道这是错误的,但是有办法做Game.Player.Health -= damage;之类的事情吗?例如,在玩家class中,public int Health get/set,当玩家类在游戏类中实例化时,我该如何编辑其他类别的健康?有没有办法将播放器obj
6 2024-04-23
编程技术问答社区
如果.Create()不能实例化,它应该返回空对象、空,还是抛出一个异常?
我希望能够使用这种代码在我的应用程序中实例化任何对象: SmartForm smartForm = SmartForm.Create("id = 23"); Customer customer = Customer.Create("id = 222"); 我现在在辩论如果该对象不存在,应该返回什么. 如果create(create()返回空对象,那么这是一种"零模式",我仍然可以在应用程序周围传递该对象并在其上调用方法,这使得使用此型号进行编程方便 如果create()返回 null ,那么我需要在每个实例化后检查对象是否等于null,这使得编程更加乏味,但更加明确.这样一个问题是,如果您忘记检查null,您的应用程序可能会长时间工作,而您不知道自己没有检查Null,然后突然打破所有的 如果create()抛出异常,它基本上与返回null相同,但通过使您创建一个尝试,接下来,最终阻止每个实例化,使编程更加乏味,但是您可以抛出各种类型的异常(您不能使用无效的解决
6 2024-04-22
编程技术问答社区
激活器.CreateInstance()故障
我有一个工厂,该工厂应该在运行时创建从类FOO继承的对象.我认为system.activator.createinstance的返回类型与其创建对象的类型相同,但是从以下错误消息来判断,其返回类型是对象. 错误1不能将类型"对象"隐式转换为" cs_sandbox.foo".存在明确的转换(您是否缺少演员?)f:\ projects \ cs_sandbox \ form1.cs 46 24 CS_SANDBOX 好吧,所以也许我 am 缺少演员,但是 return (t)System.Activator.CreateInstance(t); 导致另一个错误消息,我必须承认,这对我没有意义: 错误1找不到类型或命名空间名称't'(您是否缺少使用指令或汇编引用?) 这是我的代码: class Foo { } class FooChild1 : Foo { } class FooChild2 : Foo { } class MyFactory { p
2 2024-04-22
编程技术问答社区
是否有办法动态地创建和处置Webbrowser控件?
我有一个使用WebBrowser控件进行自动浏览的应用程序.我需要提出一种自动关闭浏览器(处置)的方法,然后创建另一个实际工作的实例. 这是我到目前为止的一些代码. this.webBrowser2 = new System.Windows.Forms.WebBrowser(); this.webBrowser2.Dock = System.Windows.Forms.DockStyle.Bottom; this.webBrowser2.Location = new System.Drawing.Point(0, 34); this.webBrowser2.MinimumSize = new System.Drawing.Size(20, 20); this.webBrowser2.Name = "webBrowser2"; this.webBrowser2.ScriptErrorsSuppressed = true; this.webBrowser2.Size = new
0 2024-04-21
编程技术问答社区
Visual Studio WinForms设计器没有实例化对象
我创建了一个从system.windows.forms.contextmenustrip类派生的类,而不是用户控件,只是带有构造函数和一个事件处理程序的普通.cs类. 当我将此类从工具箱拖到设计器上时,它会为其创建一个私人成员和几个属性,但不实例化对象. 因此,在运行时,我会得到"对象引用未设置为对象的实例".因为设计师永远不会生成该行: this.searchGridContextMenu1 = new SearchGridContextMenu(); initializecomponent. 实际上,它用来生成这条线,我一直从保险库存储库中放回原处,但是设计师再次"吃"它. 更新:我现在尝试使用同一类创建一个用户控件,并且它存在相同的问题. 解决方案 我对另一个问题进行了交叉评论,但由于这与此相关. 当用户控件不加载到Visual Studio设计师时,您需要做的事情.这些指令适用于VB.NET项目,但C#应该相似.另外,在执行此关闭
0 2024-04-20
编程技术问答社区
python中的对象初始化器语法(c#)?
我想知道是否有一种快速的方法来初始化Python中的对象. 例如,在C#中,您可以实例化对象并设置字段/属性,例如... SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 }; 谢谢 brian 解决方案 如果您想要一个带有某些字段的快速肮脏对象,我强烈建议使用命名 from collections import namedtuple SomeClass = namedtuple('Name of class', ['variableX', 'variableY'], verbose=True) myObject = SomeClass("value", 120) print myObject.variableX 其他解决方案 如果您控制了类,则可以通过从ComStructor中设置每个公共字段来实现自己的实现,默认值此处是一个示例(in Py
4 2024-04-19
编程技术问答社区
Unity 5 非静态字段、方法或属性错误需要一个对象引用。
在Unity 5中使用C#在我的PlayerMovement类的第35行上我有一个错误: 错误CS0120非静态字段需要一个对象引用, 方法或属性'gamemanager.completelevel()' PlayerMovement类: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { public GameObject deathParticals; public float moveSpeed; private Vector3 spawn; // Use this for initialization void Start () { spawn = transform.position; mo
0 2024-04-17
编程技术问答社区
具有共同抽象基类的对象的集合
我有一个称为通用的抽象类,如下: public abstract class generic { public string creatorID { get; set; } public string itemID { get; set; } public string name { get; set; } public DateTime creationDate { get; set; } public string pageName { get; set; } ... } 这是通过多个类实现的,例如: public class file : generic { public file(string _itemID, string host, string languageReferenceID) { DataTable dt = GetRecordsFromDatabase(string
4 2024-04-17
编程技术问答社区
在.NET中获取Java的Class<? extends Map>的行为
我在Java中有一个通用类,定义为: public static class KeyCountMap { private Map map = new LinkedHashMap(); // ... rest of the properties... public KeyCountMap() { } @SuppressWarnings({ "unchecked", "rawtypes" }) public KeyCountMap(Class mapType) throws InstantiationException, IllegalAccessException { map = mapType.newInstance(); } //... rest of the methods... }
0 2024-04-17
编程技术问答社区
int num = new int(); 这一行执行后会发生什么?
今天了解了一个新事物,我们可以使用new运算符如下 来创建整数 int num = new int(); 现在,我想知道我是否以这种方式创建一个整数,那么生成的整数将是值类型或参考类型?我想这将是一种价值类型.我尝试了以下代码 int num1 = 10; int num2 = new int(); int num3; num1 = num2; num2 = num3; 我有以下构建错误: 使用未分配的本地变量'num3' 我知道为什么给出了此构建错误.但是我想知道何时以及如何使用new int(),以及该如何工作?任何人都可以阐明这一点吗? 谢谢:) 解决方案 int i = new int(); 等于 int i = 0; 它们之间没有区别.他们将完全生成相同的 il 代码. // Code size 4 (0x4) .maxstack 1 .locals init ([0] int32 num
0 2024-04-16
编程技术问答社区
通用方法:用一个参数实例化一个通用类型
i有一种通用方法,可以采用T型,我需要能够在需要一个XMLNODE上调用构造函数.当前,我正在尝试通过拥有一个我想要的构造函数的抽象基类(加上一个无参数的构造函数)来做到这一点(因此,除了添加实际的子类别外,我不必编辑"子类")并限制了这一点.如果我尝试实例化这些课程之一,它会抱怨它: Cannot create an instance of the variable type 'T' because it does not have the new() constraint ,如果我添加new()约束,我会得到: 'T': cannot provide arguments when creating an instance of a variable type 我该怎么做? 解决方案 无法指定通用类型参数T应具有带有指定参数的构造函数.基类具有带有某些参数的构造函数的事实无济参数). new()约束只能仅需要一个无参数的构造函数.我可能建议添加一个接口
0 2024-04-16
编程技术问答社区