c# - C#中结构和类之间的变量初始化区别是什么
问题描述
我知道有一个类似的问题:.NET 中的结构和类有什么区别?
但我的情况更具体,所以如果我能得到答案,我将不胜感激。我有一个类来表示某种类型,当我尝试设置此类值的数组时,它会吐出空引用异常,但是当我使用结构时它不会。由于另一个限制,我需要使用一个类我怎样才能做到这一点?
简而言之,我的 c# 代码:
public class Person
{
public string name;
public string imageLocation;
public string location;
public Person()
{
name = "";
imageLocation= "";
location = "";
}
}
在同一命名空间中的另一个类中:
int i = 0;
Person[] people = new people[applicablePeople];
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read() && i < applicablePeople)
{
people[i].name= dr["Name"].ToString();
people[i].imageLocation= dr["ImageLocation"].ToString();
people[i].location = dr["Location "].ToString();
i++;
}
}
提前谢谢
解决方案
在您的示例中,people[i]
永远不会初始化。
不同之处在于类的默认值是null
,而结构不能为空。您的默认struct Person
值已分配。虽然 aclass
只是一个指向 null 的指针,直到您对其进行初始化。
你需要做
while (dr.Read() && i < applicablePeople)
{
people[i] = new Person()
// ...
推荐阅读
- c - 已知大小的未指定类型的指针算法
- spring-cloud-stream - 没有源绑定器的弹簧云流
- java - 如何使用 Spring Security 5 动态地将 OAuth 客户端凭据传递给 WebClient?
- three.js - ThreeJS:本机抗锯齿不适用于 Outline 后处理效果
- angular - RXJS:如何获得连接事件?retrywhen:如何挂钩执行?
- swiftui - SwiftUI Shapes 中的动画路径
- python - print 打印一个空格太多
- excel - 循环在文件夹中的文件上运行的函数
- powershell - 开始睡眠(或直到脚本结束)后对象输出的奇怪延迟
- python - Python生成器令人困惑的行为