我对C#有点新鲜,我得到了这个从mssql数据库获取记录的脚本。它将密钥转换为对象。
及其:
Object obj = result[i];
当我在声明后在行上启用断点时,我看到对象内的数据。现在我需要使用数据访问该属性,但因为我对C#有点新,我不知道该怎么做。
让我们说这个属性叫做:name 我用属性名称创建了一个自己的新类。
当我尝试使用以下命令获取对象的名称时:
myObject.Name = (string) obj.Name;
IDE已经发出错误,即obj中的属性不可用。
如何访问对象的name属性以将其传递给我自己的对象?
谢谢!
答案 0 :(得分:1)
所以result[i]
是您班级的一个实例(为方便起见,我会称之为Foo
)?然后你可以说
Foo obj = result[i];
myObject.Name = obj.Name;
或
Object obj = result[i];
myObject.Name = ((Foo)obj).Name;
答案 1 :(得分:0)
您需要将对象转换为正确的类型。例如。如果您的对象是:
class MyObject
{
public string Name { get; set; }
}
比你需要像:
MyObject obj = (MyObject)result[i];
答案 2 :(得分:0)
您正在尝试访问Object
类的属性,但它没有属性。您必须 cast 您的obj
到您创建的类,具有Name
属性的类,或者(更简单地),在阅读时数据库将其直接读入您的类的实例,例如:
MyClass obj = result[i]
答案 3 :(得分:0)
result[i]
中有哪些数据?它只是数据库中记录中字段的字符串吗? (也就是说,result
是DataRow
吗?)就目前而言,你只是把它放在Object
里面,而result[i]
对此并不了解。基本上,你正在“装箱”它并从编译器中删除对象数据的知识。
如果myObject.Name = System.Convert.ToString(result[i]);
只是一个字符串,请尝试以下内容:
result[i]
现在,这是相当初学的,因为这里还有其他考虑因素。如果null
永远是{{1}},那么这将引发异常,等等。但是当你正在学习时,应该获得你正在寻找的数据。