C# 中的结构体数组

2024-02-18

我正在尝试使用结构数组从用户那里获取输入,然后打印它:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CA4
{
class Program
{
    static void Main(string[] args)
    {
        StudentDetails[,] student = new StudentDetails[5, 1];

        Console.WriteLine("Please enter the unit code:");
        student[0, 0].unitCode = Console.ReadLine();

        Console.WriteLine("Please enter the unit number:");
        student[1, 0].unitNumber = Console.ReadLine();

        Console.WriteLine("Please enter first name:");
        student[2, 0].firstName = Console.ReadLine();

        Console.WriteLine("Please enter last name:");
        student[3, 0].lastName = Console.ReadLine();

        Console.WriteLine("Please enter student mark:");
        student[4, 0].studentMark = int.Parse(Console.ReadLine());

        for (int row = 0; row < 5; row++)
        {
            Console.WriteLine();
            for (int column = 0; column < 1; column++)
                Console.WriteLine("{0} ", student[row, column]);
        }

        Console.ReadLine();
    }

    public struct StudentDetails
    {
        public string unitCode; //eg CSC10208
        public string unitNumber; //unique identifier
        public string firstName; //first name
        public string lastName;// last or family name
        public int studentMark; //student mark
    }

}
}

不幸的是,输入所有数据后我得到:

CA4.Program+StudentDetails

CA4.Program+StudentDetails

CA4.Program+StudentDetails

CA4.Program+StudentDetails

CA4.Program+StudentDetails

它不会崩溃,只是我输入的数据得到了上面 5 行。

我知道它不起作用的原因是我没有正确使用结构,因为没有它们就没有问题。

有人可以帮助我并告诉我如何在上面的示例中正确使用结构吗?谢谢

Cheers,

n1te


这是因为默认情况下ToString()返回一个类型名称,您必须自己覆盖它StudentDetails struct:

public struct StudentDetails
{    
  public override void ToString()
  {
     return String.Format(
                CultureInfo.CurrentCulture,
               "FirstName: {0}; LastName: {1} ... ", 
                this.FirstName,
                this.LastName);
  }
}

顺便说一句,为什么你使用结构体和遗留数组?考虑使用class反而struct和通用IList<StudentDetails> or IDictionary<int, StudentDetails>而不是数组。 因为传统数组与结构(基本上是值类型)一起引入了装箱(结构 -> 对象),每次将项目添加到数组时,并在读回它时拆箱(对象 -> 结构)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的结构体数组 的相关文章

  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本

随机推荐

  • 使用卷时无法在主机上使用 mysql 套接字

    我来自这里 如何在主机网络上运行 docker compose https stackoverflow com questions 56203642 how to run docker compose with host network 我
  • 自定义 Laravel 关系?

    假设情况 假设我们有 3 个模型 User Role Permission 我们还说一下User与 具有多对多关系Role and Role与 具有多对多关系Permission 所以他们的模型可能看起来像这样 我故意让它们简短 class
  • 带分组的格式化选择

    现在有了 Formtastic 我有了简单的选择 f input category as gt select include blank gt false collection gt subcategories 这里我只显示儿童类别 我用作
  • 使用 FFTW 取消定义架构 x86_64 的符号

    Ceeloss MacBook Pro desktop ceelos gcc o prog I usr local include test c Undefined symbols for architecture x86 64 fftw
  • 性能反模式

    我目前正在为一位客户工作石化的由于 性能原因 而更改糟糕的不可测试和不可维护的代码 显然 存在着许多误解 而且不明白原因 只是盲目相信 我遇到的一种反模式是需要标记尽可能多的类内部密封 重新编辑 我看到将所有内容标记为sealed内部 在
  • PHP 函数没有返回值

    由于某种原因 我无法让我的函数返回字符串 password crypt password input password Encrypt Password longer than 8 characters function crypt pas
  • setkeyv 与 data.table 中出现异常错误

    我认为自己非常熟悉data table 但遇到了一个奇怪的错误setkeyv我无法解决的功能 错误非常简单 keycols lt c A B DT lt data table A 1 10 B 91 90 setkeyv DT keycol
  • 是否可以在 HipHop 中使用 PECL 扩展?

    我有一个使用rabbit mq代理的应用程序 我有用php编写的消费者并使用这个扩展http pecl php net package amqp http pecl php net package amqp 我想使用 hiphop 编译这些
  • ios 无法保存plist

    我可以在模拟器中保存 plist 文件 但无法在设备中保存 plist 文件 任何建议 我在用着 NSString dictPath NSBundle mainBundle pathForResource Dictionary ofType
  • 如何为 ASP.NET MVC 站点定义包罗万象的路由?

    我有一个新闻网站 其中的文章按类别标记 我的控制器称为 类别 此 URL http mysite com Category Sport passes Sport采取行动Index在控制器中Category 我想允许以下 URL http m
  • 如何在 JavaScript (React) 项目中使用 Azure Pipeline 变量?

    如何在 React 项目中使用为管道定义的变量 目前 我在 yml 文件中定义了构建变量 如下所示 variables src virtual furnace app dest src build REACT APP VERSION Bui
  • 为所有用户安装 Firefox 扩展 [系统范围安装]

    我编写了一个 Firefox 扩展 它打包为 xpi文件 我想为所有用户安装此扩展 我发现我们可以通过将文件放入Mozilla Extensions文件夹 则该扩展将可供所有用户使用 但问题是安装扩展后 第一次启动 Firefox 时 对于
  • 启动进程“git”返回奇怪的 129 退出代码

    In Bash git status gt dev null echo 0 Powershell 中的相同存储库 gt Start Process git ArgumentList status Wait PassThru ExitCode
  • 存储库模式与简单数据访问层有何不同?

    我对在研究存储库模式期间所读到的内容感到困惑 我想知道人们是否 错误地 使用这个词 当他们只是指数据访问层时 由于在索引中找不到 存储库 设计模式 https rads stackoverflow com amzn click com 02
  • 删除过期的访问令牌

    有没有办法从数据库中删除所有过期的访问令牌 目前我正在使用 Django oauth2 工具包 目前 oauth2 没有提供删除过期访问令牌的机制 您可以从 django shell 运行或创建执行的自定义管理命令 from provide
  • 更改factory_boy中的默认faker区域设置

    如何在 Python Factory boy 中为我的所有工厂设置默认区域设置 在文档中说应该设置它factory Faker override default locale但这对我的骗子没有任何作用 import factory from
  • 如何在 Angular 4 中使用 Material Design 图标?

    我想使用来自的图标https materialdesignicons com https materialdesignicons com 在我的 Angular 4 项目中 网站上的说明仅涵盖如何将其包含在Angular 1 x https
  • 使用 C# 控制台应用程序创建 HTTP POST 请求并接收响应

    我需要将数据发布到 URL https somesite com 以根据我发布的参数下载 responseStrem 中的文件 如何使用 C 控制台应用程序来做到这一点 参数 文件名 用户身份 密码 类型 using System usin
  • 流星,mongodb,空格键,如何只显示小数点后两位

    我有一个具有类似值的集合 pctFail 0 3515500159795462 当我将其传递给模板并显示为 myTemplate 时 它在我的 html 中显示为 0 3515500159795462 如何将其显示为 0 35 您可以使用模
  • C# 中的结构体数组

    我正在尝试使用结构数组从用户那里获取输入 然后打印它 using System using System Collections Generic using System Linq using System Text namespace C