C#将值分配给结构错误的属性

缺口

我有以下代码(简化),结构和类。

public struct pBook
{
    private int testID;

    public string request;
    public string response;
    public Int32 status;
    public int test_id
    {
        get
        {
            return testID;
        }
        set
        {
            testID = value;
        }
    }
};

public class TestClass
{
    public static void Main(string[] args)
    {
        pBook Book1;
        pBook Book2;

        Book1.request = "a";
        Book2.response = "b";
        Book2.status = 201;
        Book2.test_id = 0;  //this doesn't work, why?
    }
}

在声明中

Book2.test_id = 0;

我得到错误

使用未分配的局部变量'Book2'

任何想法如何纠正?

马克·格雷韦尔

在“定值分配”中,astruct要求在调用方法之前必须分配所有字段,而属性(甚至是属性设置器)就是方法。一个懒惰的解决方法很简单:

var Book2 = default(pBook);
// the rest unchanged

通过将所有内容显式设置为零来愚弄确定的分配。然而!IMO真正的解决方法是“没有可变结构”。可变结构会伤害您我会建议:

var Book2 = new pBook("a", "b", 201, 0);

使用(注意:这使用最新的C#语法;对于较旧的C#编译器,您可能需要进行一些调整):

public readonly struct Book
{
    public Book(string request, string response, int status, int testId)
    {
        Request = request;
        Response = response;
        Status = status;
        TestId = testId;
    }
    public string Request { get; }
    public string Response { get; }
    public int Status { get; }
    public int TestId { get; }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用反射将值分配给未知结构

Golang将值分配给深层嵌套结构

将值分配给父golang结构字段

将数组的值分配给结构的最佳方法

将值分配给原子用户定义的结构数组

将C#值直接分配给对象引用

c ++函数将值分配给类/结构的问题

C#错误消息“无法将属性分配给它-是只读的。”

将值分配给结构数组

使用for循环将值分配给结构的成员

将值分配给指针结构会产生分段错误

C#属性传入属性名称,将计算值分配给该属性

错误分配给结构

将动态列表中的值分配给模型属性。转换错误

将值分配给指针引用的结构的动态分配结构成员数组时,openacc错误

无法将值分配给struct属性。C ++

将值分配给我的结构的char成员时,C分段错误

在需要解决方案的结构内将值分配给Char * c ++

将值分配给结构字段时程序崩溃

为什么将值分配给数组结构不起作用C

将数据集中的值分配给子类的属性值

如何在C#中使用Task将值分配给对象的属性

将连接字符串分配给结构的 MySQL 连接属性时出现 NullReferenceException 错误

无法分配给属性:在将值分配给 @ObservedObject 时,“self”是不可变的

将字符串分配给 C 中的结构变量时出现分段错误

C - 分段错误将值分配给结构数组

无法将字符值分配给结构中的指针

无法将项目值分配给 C# 中的属性列表

将数据分配给 C 中的 typedef 结构时出现指针错误