多年以来,我一直使用各种基本知识。我在Visual Basic中经常使用的一个技巧是:当我想将不可见的文本与表单控件对象(按钮,标签和(特别是)图片框)相关联时,我已经在对象的标签中存储了有用的文本。 (这对图片框特别有用,因为它们不带有text属性。)
无论如何,您都可以在Visual Basic中轻松执行以下操作:
textbox1.tag = "ID of whatever sort"
稍后,您可以通过将.tag内容分配给字符串变量,或将其显示在.text属性中来检索数据。
所以:
textbox1.text = textbox1.tag
没有困难,也没有出错。
这无法在C#中完成。至少不是直接。即使您可以直接将文本分配给标签,也无法将其作为文本检索。
我相信这是因为C#将.Tag属性的内容视为对象。但是,大概Visual Basic也是如此,但是它仍然允许无异议地进行传输。
所以我的要求是:你们中任何资深的C#大师都可以向我准确地告诉我如何将分配给.Tag的文本输入.Text吗?
答案 0 :(得分:3)
只需投下
textbox1.text = (string)textbox1.tag
基本上所有类型都继承自object
,因为当将字符串存储为object
时,字符串是引用类型,它只是将其存储为最基本的基本类型。对于值类型,此过程称为装箱。您可以在下面阅读有关它们的信息
对象类型是.NET中Object的别名。在统一类型 C#系统,所有类型,预定义和用户定义的引用类型 和值类型直接或间接继承自Object。您可以 将任何类型的值分配给类型为object的变量。当一个变量 值类型的对象转换为对象,即被装箱。当一个 类型对象的变量被转换为值类型,据说是 拆箱。有关更多信息,请参阅装箱和拆箱。
值类型包括两个主要类别:
结构
枚举
结构属于以下类别:
数字类型
整数类型
浮点类型
布尔
用户定义的结构。
Reference types (C# Reference)
C#中有两种类型:引用类型和值类型。 引用类型的变量存储对其数据(对象)的引用, 而值类型的变量直接包含其数据。用 引用类型,两个变量可以引用同一对象; 因此,对一个变量的运算会影响所引用的对象 通过另一个变量。对于值类型,每个变量都有其自己的 数据的副本,并且不可能对一个数据进行操作 会影响其他变量的变量(除非是in,ref和out 参数变量参见in,ref和out参数修饰符)
Boxing and Unboxing (C# Programming Guide)
装箱是将值类型转换为类型对象或 到此值类型实现的任何接口类型。当CLR 将值类型装箱,将值包装在System.Object中,然后 将其存储在托管堆上。拆箱从中提取值类型 物体。装箱是隐式的。拆箱是明确的。概念 装箱和拆箱是类型系统的C#统一视图的基础 可以将任何类型的值视为对象。